2012-01-30 69 views
8
Array 
    (
     [0] => 0 //value is int 0 which isn;t empty value 
     [1] =>  //this is empty value 
     [2] =>  //this is empty value 
    ) 

Tôi muốn làm cho mảng ở trên như sau, Bất kỳ ai có thể giúp tôi không?Xóa phần tử giá trị trống trong mảng

Rất cám ơn

Array 
    (
     [0] => 0 
    ) 
+7

những giá trị rỗng là gì? Họ là giả, NULL, chuỗi rỗng hoặc cái gì khác? Điều gì về 0? Có phải là số nguyên 0 hoặc chuỗi "0" không? Sử dụng 'var_dump()' trên mảng của bạn để xác định loại giá trị. – BoltClock

+1

Vui lòng xác định 'giá trị trống'. – xdazz

Trả lời

19

Bạn có thể sử dụng array_filter để loại bỏ giá trị rỗng (null, sai sự thật, '', 0):

array_filter($array); 

Nếu bạn không muốn loại bỏ 0 từ của bạn mảng, xem câu trả lời của @ Sabari:

array_filter($array,'strlen'); 
+3

Không biết rằng đối số thứ hai là tùy chọn, gọn gàng. – Gajus

+0

@Zulkhaery Basrul, array_filter sẽ nghĩ giá trị 0 là giá trị trống, vì vậy kết quả cuối cùng là một mảng trống không phải là thứ tôi muốn – Acubi

+0

@Acubi: đã cập nhật câu trả lời của tôi. –

5

Bạn có thể sử dụng:

để Hủy bỏ chỉ có giá trị NULL:

$new_array_without_nulls = array_filter($array_with_nulls, 'strlen'); 

để Hủy bỏ giá trị False:

$new_array_without_nulls = array_filter($array_with_nulls); 

Hope this helps :)

+0

p.s. nó cũng loại bỏ các boolean 'false' ... – Norris

1
array_filter($array, function($var) { 
    //because you didn't define what is the empty value, I leave it to you 
    return !is_empty($var); 
}); 
0

Đó là một trường hợp điển hình cho array_filter. Trước tiên, bạn cần phải xác định một hàm trả về TRUE nếu giá trị cần được bảo tồn và FALSE nếu nó cần được loại bỏ:

function preserve($value) 
{ 
    if ($value === 0) return TRUE; 

    return FALSE; 
} 

$array = array_filter($array, 'preserve'); 

bạn sau đó xác định trong hàm callback (ở đây preserve) những gì là trống rỗng và những gì không. Bạn đã không viết riêng câu hỏi của bạn, vì vậy bạn cần tự mình làm điều đó.

0

cách nhanh chóng để tìm số còn Zero, (0)

var_dump( 
      array_filter(array('0',0,1,2,3,'text') , 'is_numeric' ) 
     ); 
/* 
print : 
array (size=5) 
    0 => string '0' (length=1) 
    1 => int 0 
    2 => int 1 
    3 => int 2 
    4 => int 3 

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