Not sure it'll suit you, as it's PHP >= 5.3 only, but here's a possible solution, using array_walk_recursive
and a closure (see Anonymous functions) :
$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);
And the result :
array
0 => int 1
1 => int 2
2 => int 3
3 => int 4
4 => int 5
5 => int 6
6 => int 7
Basicaly, the closure is the only way I got this to work : it's used to import the $result
variable, by reference, into the anonymous function.
And, just to post it, the only I got this working for PHP 5.2 (i.e. not using a closure) is with this :
$result = array();
array_walk_recursive($array, 'my_func', & $result);
var_dump($result);
function my_func($value, $key, & $result) {
$result[] = $value;
}
Which works too -- but raises a warning :
Deprecated: Call-time pass-by-reference has been deprecated
Unfortunatly, I didn't find a way of getting this to work without passing $result
by reference at call-time :-(
(Maybe someone else has an idea, about how to do that ?)
与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…