这里我有一个多维数组,使用此数组我必须合并单个数组,以我的观点尝试过,我必须使用三个foreach循环,然后我必须推入一个数组,但我担心是如果我使用foreach循环意味着我的性能会降低,那么任何人都不会为每个循环或简化的代码更新我的代码
server {
listen 80;
root /var/www/test.com/html;
index index.html index.htm index.nginx-debian.html;
server_name test.com ;
location / {
}
}
预期产量
My Array
Array
(
"100" => Array
(
"class 1" => Array
(
"0" => "ABC"
"1" => "CDE"
)
"class 2" => Array
(
"0" => "F"
)
)
"200" => Array
(
"class 3" => Array
(
"0" => "G"
)
)
)
我尝试过如下操作
Array
(
"0" => "100"
"1" => "ABC"
"2" => "CDE"
"3" => "F"
"4" => "200"
"5" => "G"
)
答案 0 :(得分:2)
使用foreach()
:
$final_array = array();
foreach($array as $key=>$arr){ // apply foreach on initial array
$final_array[] = $key; // assign key first
foreach($arr as $ar){ // now child is also array so iterate over it
$values = array_values($ar); // get all values of child array
foreach($values as $val){ // iterate over child array values
$final_array[] = $val; //assign them one-by-one
}
}
}
print_r($final_array);// print final array
没有foreach()
:
$result = array();
array_walk($original_array, function($item,$key) use (&$result){
$result[] = $key;
array_walk_recursive($item, function($v) use (&$result){
$result[] = $v;
});
});
print_r($result );
答案 1 :(得分:0)
您可以像这样平整多维数组
$result = array();
array_walk_recursive($original_array, function($v) use (&$result){
$result[] = $v;
});
如您所见,您的数组将被处理为闭包/匿名函数,并将其扁平化为最终结果。
答案 2 :(得分:0)
通过使用foreach()
和for()
,无需使用array_walk()
或array_walk_recursive()
循环就可以实现这一目标。
这是代码;
// Your input array
$input = array (
100 => array(
"class 1" => array("ABC", "CDE"),
"class 2" => array("F")
),
200 => array(
"class 3" => array("G")
)
);
$result = array();
array_walk($input, function($val, $key) use (&$result){
$result[] = $key;
array_walk_recursive($val, function($v, $k) use (&$result){
$result[] = $v;
});
});
// Your result
echo "<pre>";
print_r($result);