Лучший способ нарезать многомерный массив на основе ключей в PHP?

У меня есть такой массив результатов: -

    $array = array(
                    'key1' => array('...'),
                    'key2' => array('...'),
                    'key3' => array('...'),
                    'key4' => array('...'),
                    .
                    .
                    .
                    .
                    'keyn' => array('...')
            );

Мне нужно получить 5 элементов из массива выше. первый раз с key1 на key5, с key6 на key10 и т. д. ...... На основании условия мне нужно выполнить операцию над этим.

Мне нужен вывод: -

$array = array(
                    'key1' => array('...'),
                    'key2' => array('...'),
                    'key3' => array('...'),
                    'key4' => array('...'),
                    'key5' => array('...')
            );

Я могу получить значение, если значение моего ключа напрямую $array['key1']....$array['key5'], но если ключ является неизвестным значением, я сталкиваюсь с проблемой.

Заранее спасибо.


person Community    schedule 06.05.2013    source источник
comment
Я не совсем уверен в вопросе. Пробовали ли вы array_slice() и если да, то что с этим не так?   -  person deceze♦    schedule 06.05.2013


Ответы (4)


Для перебора такого массива вы можете использовать array_slice() следующим образом:

$n = count($array);
$len = 5;
for ($i = 0; $i + $len <= $n; $i += $len) {
    $chunk = array_slice($array, $i, $len, true);
    // do work on $chunk
}
person Ja͢ck    schedule 06.05.2013

вы можете просто соединить или отрезать первые 5 элементов массива.

<?php
 $array = array(
                    'key1' => array('...'),
                    'key2' => array('...'),
                    'key3' => array('...'),
                    'key4' => array('...'),
                    'key5' => array('...'),
                    'key6' => array('...'),
                    'key7' => array('...')
            );

$arraySlice1 = array_slice($array, 0, 5);
$arraySlice2 = array_splice($array, 0, 5);

Slice оставит $array нетронутым, а $array по-прежнему будет содержать 7 элементов, splice удалит возвращенные результаты из $array, поэтому $array будет содержать только key6 и key7

person nvanesch    schedule 06.05.2013

Изменить: лучший способ - array_slice. См. этот вопрос. Пример:

$fifthElement = array_slice($array,4,1);  //will get the 5th element

Вы можете использовать foreach таким образом, чтобы получить ключи и связанные ценности. Итак, чтобы получить пятую пару ключ-значение, вы можете написать:

$i = 1;
foreach($array as $key => $value)
{
    if($i == 5)
    {
        echo "Fifth Key=".$key." value=".$value."\n";
    }
    $i++;
}
person Geier    schedule 06.05.2013
comment
Спасибо, Гейер, за быстрый ответ. Я знаю этот способ, но если у меня есть 1000 элементов в моем массиве результатов, мне нужно проверить условие 200 ??? - person ; 06.05.2013
comment
@ user1978104: Вы правы, этот метод довольно неэффективен. Смотрите обновленный ответ. - person Geier; 06.05.2013

array_slice наверняка подойдет вам

    $first_five_elements = array_slice($array, 0, 5);

Вот кодовая панель

person Roopendra    schedule 06.05.2013