2013-05-09 48 views
18

Trong mảng kết hợp sau đâyLàm thế nào để kiểm tra xem một mảng kết hợp có một sản phẩm nào hoặc giá trị null

$array = array(
    [0] => 0 
    [1] => 1 
    [2] => 
    [3] => 2 
    [4] => 
) 

làm thế nào bạn có thể xác định nếu một phím được có một (hoặc null) giá trị rỗng? Tôi đã từng

if(empty($array[$value])) 

if(isset($array[$value])) && $array[$value] !=='') 

Khi sử dụng empty tôi cũng nhận false cho giá trị mảng đầu tiên đó là zero và isset dường như không làm các trick.

+1

sử dụng 'is_null()'? – Populus

+0

Tôi đang làm: 'foreach ($ array as $ key => $ value) {if (is_null ($ array [$ value])) {echo 'NULL'; }} 'nhưng nó không hoạt động. Tôi đang làm gì sai? – bikey77

+0

$ mảng [/ * phải ở đây * /]; –

Trả lời

21

sử dụng array_key_exists()is_null() cho điều đó. Nó sẽ trở lại TRUE nếu phím tồn tại và có giá trị xa NULL

khác biệt:

$arr = array('a' => NULL); 

var_dump(array_key_exists('a', $arr)); // --> TRUE 
var_dump(isset($arr['a'])); // --> FALSE 

Vì vậy, bạn nên kiểm tra:

if(array_key_exists($key, $array) && is_null($array[$key])) { 
    echo "key exists with a value of NULL"; 
} 
+2

'array_key_exists' sẽ trả về giá trị thực cho các giá trị rỗng, vì khóa này không tồn tại. – Paulpro

+1

@Paulpro Và đó là chính xác trong câu hỏi – hek2mgl

+1

Ồ tôi hiểu. Tôi nghĩ bạn có nghĩa là array_key_exists sẽ trả về false cho một giá trị rỗng. Bây giờ bạn đã giải thích chi tiết hơn +1 – Paulpro

1
foreach($array as $i => $v) { 
    if(null === $v) { 
     // this item ($array[$i]) is null 
    } 
} 

... hoặc, đối với một khóa đã cho:

if(null === $array[2]) { 
    // this item ($array[2]) is null 
} 
4

PHP empty giá trị trả lại trạng thái:

Trả về FALSE nếu var tồn tại và có giá trị không trống, khác không. Nếu không thì trả về TRUE.

Những điều sau đây được coi là rỗng:

"" (một chuỗi rỗng)

0 (0 là một số nguyên)

0.0 (0 như một phao)

"0" (0 dưới dạng một chuỗi)

NULL

FALSE

mảng() (mảng trống)

$ var; (biến được khai báo, nhưng không có giá trị)

Từ ví dụ mảng của bạn Tôi lấy nó làm bạn muốn loại trừ 0 làm số nguyên. Nếu đó là trường hợp, điều này sẽ thực hiện thủ thuật:

<?php 
    $array = array(0, 1, '', 2, ''); 

    foreach ($array as $value) { 
     echo (empty($value) && 0 !== $value) ? "true\n" : "false\n"; 
    } 

Nếu bạn muốn loại trừ các điều kiện khác empty xem xét chỉ phủ nhận chúng trong điều kiện đó. Hãy xem xét rằng đây có thể không phải là giải pháp tối ưu nếu bạn muốn kiểm tra các giá trị khác.

+1

(empty ($ value) && '0'! == $ value) thêm một trích dẫn quote/double trên zero làm việc cho tôi. –

+0

@IvorySantos, ''0'' và' "0" 'là các biểu diễn chuỗi bằng 0 và không phải là biểu diễn số nguyên, nó thực sự phụ thuộc vào những gì bạn đang cố gắng thực hiện. –

2
if (!isset($array[$key]) || $array[$key] == "" || is_null($array[$key])) 
{ 
    //given key does not exist or it has "" or NULL value 
} 
1

có khả năng này có thể là sạch nếu tôi biết cách mảng được xây dựng, nhưng có giả định rằng bạn có thể có cả chuỗi rỗng, hoặc null trong mảng, và bạn muốn chiếm giá trị từ 0 - -> đây là những gì tôi muốn làm:

if (is_null($array[$key]) || (string)$array[$key] == '') 

Dưới đây là một chút mã kiểm tra hiển thị nó trong hành động với một mảng có cả 0, null, một chuỗi rỗng, và số nguyên khác không ...

$array = array(0,1,null,2,''); 
print_r($array); 

foreach ($array as $key => $val) { 
     if (is_null($array[$key]) || (string)$array[$key] == '') { 
      echo $key.", true\n"; 
     } 
} 

Đối với usi ng isset() - một chuỗi rỗng được coi là được thiết lập. Đó có thể là những gì bạn đang chạy vào (ngoài 0 được coi là trống) So sánh với cách sử dụng này:

$foo = array(0,1,null,2,''); 

print_r($foo); 
foreach ($foo as $key => $val) { 
     if (isset($foo[$key])) { 
       echo $key.", true\n"; 
     } 
} 
12

Nhìn vào tất cả các câu trả lời và tôi không thích chúng. Điều này không đơn giản hơn và tốt hơn sao? Đó là những gì tôi đang sử dụng:

if (in_array(null, $array)) { 
    // There are null values. 
    } 
+2

'if (in_array ('', $ _POST)) {// Chứa giá trị rỗng. } ' –

+0

Trong PHP 7.0.1 (phiên bản Windows), sự cố này không hoạt động – HellBaby

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