Ava*_*lla 4 php arrays foreach multidimensional-array
鉴于我有这些数组:
$array1
:
Array
(
[0] => Title1
[1] => Title2
[2] => Title3
[3] => Title4
...
Run Code Online (Sandbox Code Playgroud)
$array2
:
Array
(
[0] => A
[1] => B
[2] => C
[3] => D
...
Run Code Online (Sandbox Code Playgroud)
$array3
:
Array
(
[0] => 1
[1] => 2
[2] => 3
[3] => 4
...
Run Code Online (Sandbox Code Playgroud)
我想将所有上层数组转换为一个多维数组,如下所示:
Array
(
[0] => Array
(
[0] => Title1
[1] => A
[2] => 1
)
[1] => Array
(
[0] => Title2
[1] => B
[2] => 2
)
[2] => Array
(
[0] => Title3
[1] => C
[2] => 3
)
...
Run Code Online (Sandbox Code Playgroud)
我有这个代码,我做我想要的但是过度和低效:
$result1 = array();
foreach($array1 as $key => $value) {
$tmp = array($value);
if (isset($array2[$key])) {
$tmp[] = $array2[$key];
}
$result1[] = $tmp;
}
$result2 = array();
$i=0;
foreach($result1 as $value){
$result2[$i] = $value;
$result2[$i][] = $array3[$i];
$i++;
}
print_r($result2);
Run Code Online (Sandbox Code Playgroud)
在效率方面,我如何改进我的代码?这可以在一个" foreach "中完成吗?如果我有十个甚至更简单的数组怎么样?如果是这种情况,使用我的代码我将需要复制第二个foreach并更改前两个数组之后的每个其他数组的变量.
Riz*_*123 10
这应该适合你:
只需使用array_map()
一次遍历所有数组,例如
$result = array_map(function($v1, $v2, $v3){
return [$v1, $v2, $v3];
}, $array1, $array2, $array3);
Run Code Online (Sandbox Code Playgroud)
或者你可以使用call_user_func_array()
,所以如果扩展你只需要将变量添加到数组中而不必在匿名函数中添加参数:
$result = call_user_func_array("array_map", [NULL, $array1, $array2, $array3]);
Run Code Online (Sandbox Code Playgroud)