为什么array_push()可以“加深”数组的深度?

时间:2018-09-07 14:39:52

标签: php

我有一个二维数组,称之为BASE。 现在,我想用一个foreach循环遍历此数组,每次将当前选定的数组推入一个新数组。

foreach($BASE as $array){
$newarray = [];
array_push($newarray, $array);
$newarraylength = count($newarray[0])
//some more code 
}

这样,我想要完成能够在嵌套在此foreach循环内的for循环内的推入数组上进行迭代的过程,像这样

for(index = 0; index < $newarraylength; $index++){
newarray[0][index]
}

但是,当将BASE数组中的数组推入新数组时,该新数组由于某种原因变为三维Oo 因此,上面的语法不起作用。

因此,请你们中的任何一个告诉我如何处理遍历此三维数组的循环。因为我的头无法设法解决这个问题。 或有人请告诉我如何将一维数组推入另一个一维仍为空的数组中,而不创建一个三维数组。

2 个答案:

答案 0 :(得分:0)

我相信您想要做的是:

foreach($BASE as $array){
    $newarray = [];
    array_push($newarray, $array);
    $newarraylength = count($newarray[0])
    //some more code 
}

您要做的是推送整个二维数组。 因此,如果$ BASE为:

array(
   '1' => array('a', 'b'),
   '2' => array('c', 'd')
)

然后将其推至$ newarray将导致

$newarray = 
array(
  0 => array(
     '1' => array('a', 'b'),
     '2' => array('c', 'd')
  )
);

答案 1 :(得分:0)

您基本上想要实现的目标是:

foreach($BASE as $array){
    $newarray = [];
    array_push($newarray, $array);
    $newarraylength = count($newarray[0])
    //some more code 
    for(index = 0; index < $newarraylength; $index++){
          //your code with newarray[0][index] here
    }
}

但可以使用两个嵌套的foreach

foreach($BASE as $array){

    foreach($array as $key=>$value){

    }
}

请记住,第一种方法仅适用于非关联数组...