php if else条件与数组对象

时间:2014-04-08 05:04:18

标签: php arrays

我为$ipCheck = $home_model->checkIP($id);设置了此变量,在$ipCheck的print_r之后,我得到了更低的结果。

[0] => stdClass Object
        (
            [ID] => 330
            [image_ID] => 44
            [ip] => 192.168.1.197
            [like_count] => 1
            [favorite_count] => 0
        )

    [1] => stdClass Object
        (
            [ID] => 332
            [image_ID] => 44
            [ip] => 192.168.1.197
            [like_count] => 0
            [favorite_count] => 1
        )

 )

现在我必须设置一些条件:favorite_count = 0 echo favorite count 0 else favorite count 1

我已经尝试过这种情况但没有工作。

<?php if(isset($ipCheck[0]->favorite_count) == 0 or empty($ipCheck[0]->favorite_count)) { ?>
    favorite count 0
    <br />
<?php }else{ ?>
    favorite count 1
    <br />
<?php }?>

我每次都会favorite count 0。你能帮我解决这个问题。我是新的,学习PHP。如果你帮助我,我会感激不尽。

感谢。

2 个答案:

答案 0 :(得分:2)

如果我理解正确你想要最喜欢的计数1,如果任何数组对象有喜欢的计数1而不仅仅是第一个。在那种情况下如何:

$favorite=0;
foreach($ipCheck as $obj){
    if(isset($obj->favorite_count) && $obj->favorite_count!=0)
         {$favorite++;}
}
echo "favorite count ".$favorite."<br />";

答案 1 :(得分:1)

isset和empty返回,反对,布尔值。如果您的变量为空,则返回true,如果您的变量未设置,则isset返回false。

另外你的== 0不检查变量类型,所以false将== 0.使用===而不是要求它是一个整数(数字)

如果你的isset返回false,你的isset == 0将返回true。如果你的isset返回true但是为0你的if将返回true,如果你的变量为空,你的if将返回true。

如果它是整数,双精度或字符串(基本上布尔值0不为空,其他一切都是空的),则空将接受0作为empty value。在你的情况下,强迫它总是是真的。

另外,请避免<?=使用<?php echo<?=是特定于环境的,需要特定的php设置才能在移动到新环境时破坏您的代码。

您可以在其他两个评论的代码段中看到一些选项。在这种检查的情况下,foreach不会迭代空值,因此空检查是多余的(并且仍然总是如此),但除此之外,那里使用的代码也不错。

在你的情况下,你可能只是侥幸逃脱

if(isset($ipCheck[0]->favorite_count)){
   echo "favorite count ". $ipCheck[0]->favorite_count;
}