2013-05-06 4 views
2

У меня есть результат массив как это: -Лучший способ срезать многомерный массив на основе ключей в 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'] но если ключ неизвестно значение, чем я перед проблемой.

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

+0

Я не совсем уверен, вопрос. Вы пробовали 'array_slice()', и если да, что с этим не так? – deceze

ответ

0

Чтобы перебрать такой массив можно использовать 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 
} 
+0

спасибо, что это работает для меня. :) – 2013-05-06 14:45:01

0

Редактировать: лучший способ - array_slice. См. Вопрос this. Пример:

$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++; 
} 
+1

Спасибо Гейер за ваш быстрый ответ. Я знаю этот путь, но если у меня есть 1000 элементов в моем массиве результатов, чем мне нужно проверить условие 200 ??? – 2013-05-06 14:32:58

+0

@ user1978104: Вы правы, этот метод довольно неэффективен. См. Обновленный ответ. – Geier

0

вы можете просто склеить или ломтика первые 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); 

фрагмент оставит $ массив нетронутыми и $ массив будет по-прежнему держать 7 пунктов, сращивание удалит возвращаемые результаты из массива $, так что $ массив будет содержать только key6 и key7

Смежные вопросы