2014-03-29 5 views
0

Может ли кто-нибудь объяснить, почему это возвращает непустую?PHP пустая функция - ассоциативный массив

<?php 

$attributes=array("description"=>"","quantity"=>"","price"=>"","discount"=>""); 

if(empty($attributes)) 
    echo 'empty'; 
else 
    echo 'non empty'; 
exit; 

?> 
+0

Это потому, что элемент массива имеет в нем ключи, хотя в нем нет значений, поэтому он считается непустым. –

ответ

4

manual documentation for empty() Из:

Определить, считается ли переменная быть пустым. Переменная считается пустой, если она не существует или ее значение равно FALSE. empty() не генерирует предупреждение, если переменная не существует.

В этом случае переменная $attributes существует и не равна FALSE. Таким образом, empty() будет возвращать значение boolean FALSE.

Чтобы проверить, если каждая из них является пустым и эхо сообщение:

foreach ($attributes as $key => $value) { 
    if (empty($value)) { 
     echo "'$key' is empty\n"; 
    } 
} 

Чтобы проверить, если все значения массива являются пустыми:

if(!array_filter($attributes)) { 
    echo 'All values are empty'; 
} 

Для проверьте, нет ли значений значений массива:

if (array_search('', $attributes) !== FALSE) { 
    echo 'One of the values in the array is empty'; 
} 
+1

Умение .. Спасибо за четкие объяснения кода .. :) –

0

Это потому, что у вас есть массив пустых строк, который не является пустым массивом.

+0

в порядке. Благодарю. Но каков лучший способ проверить, является ли указанный выше массив пустым или нет? –

+0

Да .. Глядя .. Спасибо за обновление .. –

Смежные вопросы