我在这里有一个简单的问题。我知道cakePHP find('first')函数返回一个包含第一个结果的数组(如果找到),否则返回false。我的问题是,如果我写这样的支票怎么办:
if(result_is_array) // that means I have data
{
// do something
}
else // that means result is a boolean
{
// do something else
}
我可以只说:
而不是检查从find('first')
获得的结果是否是数组?
$result = $this->MyModel->find('first');
if($result)
{
// do something
}
顺便说一句,如果我在这里得到一个数组,那么它会在php中评估为TRUE
吗?在PHP中if(array())
等于true
吗?
答案 0 :(得分:8)
是的,你可以做到
$result = $this->MyModel->find('first');
if($result)
length > 0
的数组返回true
Explanation is here in the docs
转换为布尔值时,以下值被视为FALSE
- 包含零元素的数组
其他每个值都被视为TRUE
答案 1 :(得分:2)
而不是检查从find('first')获得的结果是否是 数组与否
是。第二种方式:if ($result)
。如果find
返回空数组或布尔值false
,则不会执行分支。
以这种方式执行此操作的最佳部分是使读者清楚知道您正在检查非空值。
答案 2 :(得分:1)
答案 3 :(得分:1)
根据the documentation,如果你试图将一个数组视为一个布尔值,那么当数组不为空时,该数组将被认为是真的。
答案 4 :(得分:0)
空数组总是会计算为false,或者如果它包含任何键/值,那么它将计算为true。如果$this->MyModel->find('first');
总是返回一个数组,那么空结果将评估为false,而其他方式则为true。所以你的代码完全有效。
答案 5 :(得分:0)
如果您要查找TRUE
值,请使用以下内容:
if ( $result !== false )
{
// do something
}