我为$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。如果你帮助我,我会感激不尽。
感谢。
答案 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;
}