Зацикливание многомерного массива в php - PullRequest
2 голосов
/ 07 сентября 2010

У меня есть этот многомерный массив в php, и мне нужно иметь доступ ко всем элементам, включая первый элемент «Компьютеры».Мне нужно превратить этот массив в два массива, и я использовал этот цикл

    $i = 0;
$left = array();
$right = array();
    foreach ($all_products as $product) {
    if ($i++ % 2 == 0) {

        $left[]  = $product;
    } else {
        $right[] = $product;
    }
}

Вот структура $ all_products

Array ( 
  [Computers] => Array ( 
    [macbook] => Array ( [price] => 575 
                           [quantity] => 3               
                           [image] => T-SMALL-blue.png 
                           [descr] => osx
                          )
    [windows] => Array ( [price] => 285 
                         [quantity] => 1 
                         [image] => TU220-blue.png 
                         [descr] => something windows )  
                        ) 
 [Screens] => Array ( 
    [FIREBOX S5510 15", SPKRS ] => Array ( [price] => 489 
                                           [quantity] => 3 
                                           [image] => [descr] => SPKRS 
                           ) 
                        ) 
 [Software] => Array ( .....

, но когда я регистрирую $ слева или $ справа

[0] => Array ( 
  [macbook] => Array ( 
     [price] => 575 
     [quantity] => 3 
     [image] => TOWER-PC-LENOVO-SMALL-blue.png 
     [descr] => osx
             ) 
  [windows] => Array ( 
     [price] => 575 
     [quantity] => 3 
     [image] => TOWER-PC-LENOVO-SMALL-blue.png 
     [descr] => something windows
) 
[1] => Array 

где текст "Компьютеры", "Экраны"

Ответы [ 2 ]

3 голосов
/ 07 сентября 2010

Вы добавляете следующий элемент в $ left и $ right, когда используете [], и его число. Попробуйте:

foreach ($all_products as $key=>$product) {
if ($i++ % 2 == 0) {
        $left[$key][]  = $product;
    } else {
        $right[$key][] = $product;
    }
}
2 голосов
/ 07 сентября 2010

Вам необходимо использовать цикл foreach с переменной $key:

foreach ($all_products as $arrayIndex=>$product) {

эта переменная ($arrayIndex, может быть названа как угодно), будет содержать строки индексов массива внутрицикл foreach.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...