不知道它會適合你,因爲它是PHP只> = 5.3,但這裏有一個可能的解決方案,使用array_walk_recursive
和封蓋(見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);
其結果是:
array
0 => int 1
1 => int 2
2 => int 3
3 => int 4
4 => int 5
5 => int 6
6 => int 7
基本上,封閉是我得到這個窩窩的唯一方法rk:它用於通過引用將$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
:-(
工作的一種方式(也許別人有一個想法,如何做到這一點?)
+1。雖然我有一個不使用閉包的答案,但這是我首先想到如何去做的。當PHP5.3變得更常見時,回答PHP問題會更有趣。 – Yacoby 2010-03-18 22:57:16
@Yacoby:PHP 5.3 FTW! *(匿名函數和閉包是我真正希望能夠在工作中使用的一件事......但我們使用的是PHP 5。2 ;-()* – 2010-03-18 22:59:16