我有一个模型可以检查数据库中的条目,就像这样:
public function getByID($id)
{
if(false == is_numeric($id))
return false;
$images = array();
$query = $this->db->where("id_album", $id)->order_by("order", "ASC")->get("images");
foreach($query->result() as $row)
$images[] = $row;
return (object) $images;
}
在我的视图中,我想知道我是否有一行或没有,以显示图像或没有。我这样做:
<?php if(false != isset($content->images)): ?>
<pre><?php print_r($content->images); ?></pre>
<?php endif; ?>
但每次我尝试跳过时,我没有结果(我得到一个stdClass()空),我失败了。我尝试了isset
,$content->images != NULL
,!$content->images
...我不知道如何做到这一点,以跳过"严重性:通知消息:未定义的变量""。
先谢谢你。
更新:$content
的集合比图像多,如$content->_data
或$content->title
。
当我在数据库上没有图像,我没有从MySQL返回,这样做:
<?php echo count($content->images); ?>
<pre><?php print_r($content->images); ?></pre>
输出为:
1
stdClass ( )
6条答案
按热度按时间smtd7mpg1#
你为什么不能用
这样您就可以对两个实体执行检查。
因为图像是一个可以迭代的对象,你也可以检查它。
另外,您似乎对布尔值使用了错误的比较运算符,您应该使用严格的比较标准,即
===
,而不是==
,或者!==
,而不是!=
:)oprakyz72#
我知道这是一个老问题,但它仍然没有得到正确的回答。
isset
* 仅 * 测试键是否存在 * 而 * 不测试键是否为空。这是一个重要的区别。请参见示例:http://us1.php.net/isset要正确测试数组是否包含键,应按照本页其他地方的说明使用
array_key_exists
。另一方面,若要测试对象是否包含属性,则应使用
property_exists
方法。即使属性具有NULL
值,property_exists()
也会返回TRUE
。所以,你的代码应该看起来像这样(是的,我改变了一点,但重点仍然是一样的):
uinbv5nw3#
在尝试了解如何检查空stdClass时遇到此问题/答案。
给出的答案并不是真正的答案的问题在主题,导致人们在这里不会得到一个明确的答案,所以我会添加一个改进的版本:
将stdClass类型转换为array,如下所示:
hfwmuf9z4#
将
count
与isset
一起使用:codepad example
2uluyalo5#
我想检查某个对象是否具有给定的所有属性,所以我做了以下操作:
此外,您可能还需要检查是否仅存在一个或多个属性:
zazmityj6#
如果我想测试整个对象来知道我是否做了一些事情,我会这样处理: