在php中循环通过多维数组

在php中循环通过多维数组,php,arrays,multidimensional-array,Php,Arrays,Multidimensional Array,我有这个php多维数组,我需要能够访问所有元素,包括第一个元素“Computers”。我需要将这个数组转换成两个数组,我使用了这个循环 $i = 0; $left = array(); $right = array(); foreach ($all_products as $product) { if ($i++ % 2 == 0) { $left[] = $product; } else { $right[] = $produ

我有这个php多维数组,我需要能够访问所有元素,包括第一个元素“Computers”。我需要将这个数组转换成两个数组,我使用了这个循环

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

        $left[]  = $product;
    } else {
        $right[] = $product;
    }
}
下面是$all_产品的结构

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 ( .....
但当我记录$left或$right时

[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 

文本“计算机”、“屏幕”在哪里?您需要使用带有
$key
变量的
foreach
循环:

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

此变量(
$arrayIndex
,可以确定命名为任何名称)将在foreach循环中保存数组索引字符串。

使用[]时,您正在将下一个元素添加到$left和$right,以及它的数值。 尝试:


如何访问字符串“Computer”,我尝试了left[0],但什么也没有。我知道我可以做left[“Computers”]但是在我把它拉出来之前我没有这个值是的,但是当我循环通过并且数组中有3个元素时,所有三个打印“Computers”奇怪…任何ideastry foreach($left as$key=>$left_product)打印($key),因为key()有内部指针,在循环时需要移动。因此,您必须使用next()等(更多信息请参见手册;P)
foreach ($all_products as $key=>$product) {
if ($i++ % 2 == 0) {
        $left[$key][]  = $product;
    } else {
        $right[$key][] = $product;
    }
}