我想将多维数组展平为单维,因此我使用array_reduce()
来完成它。
但是在这个地方敲了一下。
$array = array
(
1 => array
(
0 => 1,
1 => 'a'
),
2 => array
(
0 => 2,
1 => 'b'
)
)
代码:
$key = 1;
$array_reduced = array_reduce( $array,function(&$result, $item){
$result[] = $item[$key];
return $result;
});
print_r($array_reduced);
输出应为:
Array
(
[0] => a
[1] => b
)
在此行显示Undefined variable: key
$result[] = $item[$key];
如果我将$item[$key]
替换为其工作的$item[1]
。
如何在$key
中使用array_reduce()
。
答案 0 :(得分:2)
你的问题很简单,变量$key
超出了闭包函数的范围。因此,您可以使用关键字global
(这不是最好的)或use()
。所以我建议你像这样使用use()
:
array_reduce($array, function(&$result, $item)use($key){ //<-- See use
$result[] = $item[$key];
$key++; //Don't forget to increment your variable
return $result;
});
答案 1 :(得分:0)
你在寻找这样的东西:
$key = 1;
$array_reduced = array_reduce( $array,function(&$result, $item){
$key++;
$result[] = $item[$key];
return $result;
});
print_r($array_reduced);
<强>输出:强>
Array ( [0] => a [1] => b )