不确定这是否适合您,因为它仅支持PHP >= 5.3,但这是一个可能的解决方案,使用array_walk_recursive
和闭包函数(参见匿名函数)::
$array = array(
array(1, 2, 3),
array(4, 5, 6),
array(7),
);
$result = array();
array_walk_recursive($array, function ($value, $key) use (& $result) {
$result[] = $value;
});
var_dump($result);
结果如下:
array
0 => int 1
1 => int 2
2 => int 3
3 => int 4
4 => int 5
5 => int 6
6 => int 7
基本上,闭包是我让这个工作的唯一方法:它被用来通过引用将$result
变量导入匿名函数中。
而且,为了发布它,我让这个在 PHP 5.2 中工作的唯一方法(即不使用闭包)是这样的:
$result = array();
array_walk_recursive($array, 'my_func', & $result);
var_dump($result);
function my_func($value, $key, & $result) {
$result[] = $value;
}
这也可以运行,但会引发一个警告:
Deprecated: Call-time pass-by-reference has been deprecated
不幸的是,我没有找到一种方法在调用时不通过引用传递$result
来使其工作 :-(
(也许其他人有想法,如何解决这个问题?)