如何从数组中检查空值?

时间:2014-07-08 10:31:58

标签: php arrays json

行。所以我有json_encoded string这样:

{"MostViews":"1","Tags":"","PhotoSize":""}

解码它所以它看起来像这样:

$specificdetail = json_decode('{"MostViews":"1","Tags":"","CanvasSize":""}',true);
print_r(specificdetail);

// printed array 
    Array
    (
        [MostViews] => 1
        [Tags] => 
        [PhotoSize] => 
    )

现在你可以在数组中看到有两个项目Tags和PhotoSize是空的。

和我的要求是:

我正在创建一个dynamic div,如果我有一个带有值的项目,这将是可见的。我的意思是项目应该有任何价值。如果全部为空,那么我将不会显示div

所以我只是提取了数组值的基本内容:

$counter=0;
foreach($specificdetail as $specificd)
{
    if(!empty($specificd)){
        $counter++;
    }
} 
if(!empty($counter))
{
   echo "<div>Detail:</div>";
}

现在它给了我Fatal Error

  

致命错误:无法访问空属性

我还尝试使用key=>value对并检查了值但结果相同。

有谁能告诉我这有什么不对吗?我知道之前已经问过许多与这个致命错误相关的问题而且我已经检查了一些但是没有人帮助过我?

请帮助。

4 个答案:

答案 0 :(得分:0)

首先json使用json_decode()函数解码您的代码,然后

$old_count=count($array);

$new_count=count(array_filter($array));

$number_of_empty_values=($old_count - $new_count);

echo $number_of_empty_values;

答案 1 :(得分:0)

行。所以我只是对我的if条件进行了一些更改,并使用了key=>value

foreach($specificdetail as $key=>$specificd)
        {
            if($specificd !== '' ){
                $counter++;
            }
        }
echo $counter; // it gives me 1 which is true because there is only one item is not empty
BTW感谢所有人给你宝贵的时间。

答案 2 :(得分:0)

请改为尝试:

if($counter != 0)

答案 3 :(得分:0)

您好,只需输入此代码

$empty=array();
$feed=array();
$k=0;
$count_feeed=0;
$count_empty=0;
foreach($specificdetail as $key=>$val){
  if($val != ""){
    $feed[$k][$key]=$val;
    $count_feeed++;
 }else{
   $empty[$k][$key]=$val;
   $count_empty++;
  }
  $k++;
 }
echo "<br/> Total feeding element: $count_feed;";
echo "<br/> Total empty element: $count_empty;";
echo "Your feeding array which is not empty.";
echo "<pre>";
print_r($feed);
echo "<br/>";
echo "Your empty array which is empty.";
echo "<pre>";
print_r($empty);
echo "<br/>Enjoy....";

让我知道是否有任何错误