Không chắc nó sẽ phù hợp với bạn, vì nó là PHP> = chỉ 5.3, nhưng đây là một giải pháp khả thi, sử dụng array_walk_recursive
và đóng cửa(xem 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);
Và kết quả:
array
0 => int 1
1 => int 2
2 => int 3
3 => int 4
4 => int 5
5 => int 6
6 => int 7
Về cơ bản, cách đóng là cách duy nhất tôi có được điều này rk: nó được sử dụng để nhập biến số $result
, theo tham chiếu, vào hàm ẩn danh.
Và, chỉ để gửi nó, duy nhất tôi đã làm việc này cho PHP 5.2 (tức là không sử dụng một đóng cửa) là với điều này:
$result = array();
array_walk_recursive($array, 'my_func', & $result);
var_dump($result);
function my_func($value, $key, & $result) {
$result[] = $value;
}
Những công trình quá - nhưng tăng cảnh báo:
Deprecated: Call-time pass-by-reference has been deprecated
Thật không may, tôi không tìm thấy một cách để nhận này để làm việc mà không đi $result
bằng cách tham khảo tại cuộc gọi thời gian :-(
(Có lẽ ai đó có một ý tưởng, về làm thế nào để làm điều đó?)
+1. Mặc dù tôi có câu trả lời không sử dụng bao đóng, đây là suy nghĩ đầu tiên của tôi về cách thực hiện. Trả lời các câu hỏi PHP sẽ thú vị hơn khi PHP5.3 trở nên phổ biến hơn. – Yacoby
@Yacoby: PHP 5.3 FTW! * (chức năng ẩn danh và đóng cửa là một điều tôi thực sự muốn có thể sử dụng, tại nơi làm việc ... Nhưng chúng tôi đang sử dụng PHP 5.2 ;-() * –