2010-09-03 22 views
10

Tôi đang cố xóa các phần tử trống trong một mảng với hàm array_filter.Xóa các phần tử mảng trống bằng mảng_filter với hàm gọi lại

Khi tôi sử dụng một callback bên ngoài như thế này:

function callback($a) { return !empty($a);} 
$arr = array("abc",'','ghi'); 
$res = array_filter($arr, "callback"); 

nó hoạt động như mong đợi.

Nhưng nếu tôi sử dụng array_filter như thế:

$arr = array("abc",'','ghi'); 
$res = array_filter($arr, function($a) { return !empty($a);}); 

Nó không thành công với các lỗi:

PHP Parse error: syntax error, unexpected T_FUNCTION in test.php on line 2 

am i làm gì sai?

+0

@moderator: Tôi vừa mới được bình chọn về câu hỏi này và http://stackoverflow.com/q/4043741/372239 trong cùng một giây. Tôi đoán một downvoter nối tiếp đang hoạt động – Toto

Trả lời

15

Dường như bạn đang sử dụng phiên bản PHP không hỗ trợ anonymous functions (có sẵn từ PHP 5.3.0).

Nhưng array_filter nào đã lọc các giá trị rỗng nếu bạn không chỉ định một chức năng gọi lại:

Nếu không callback được cung cấp, tất cả các mục của input bằng FALSE (xem converting to boolean) sẽ được gỡ bỏ.

+0

Cảm ơn, nó hoạt động tốt mà không cần gọi lại. – Toto

+0

Chỉ cần lưu ý rằng không có gọi lại và đầu vào như $ arr = array ("abc", '', 'ghi', ''); mục cuối cùng sẽ không được lọc ra vì array_filter sẽ không cắt đầu vào. –

0

Nó hoạt động tốt với PHP5. Kiểm tra phiên bản PHP của bạn và nâng cấp nếu cần.

+1

Tôi có php 5.1.6 và không thể nâng cấp :-( – Toto

Các vấn đề liên quan