我有这样的功能:
$arrayz = fetch_array_from_somewhere();
if($arrayz) {
$arrayz['foo'] = 12;
}
现在如果array
结束为空,它将是假的,如果它有一些但我不关心它有什么,因为我只是,例如,向该数组添加更多数据;可以这样使用if()
语句吗?
对象数组的问题(只需$ arrayz-> foo = 12)?
或者我应该使用empty()?
编辑1:只是为了澄清我说对象数组的意思是:对象数组。
所以我知道我将永远得到一个数组。我不在乎它里面是什么。
编辑2:
总而言之,如果我知道我将获得一个数组,无论是完整的还是array()
,如果它是一个常规数组或一个对象数组(对象数组),我应该只使用这个形式。
但如果我认为我会得到一些东西,我应该使用附加检查。
答案 0 :(得分:3)
如果fetch_array_from_somewhere
只返回数组,那么你可以这样做。空数组的计算结果为false
。
对于object,你不能这样做,除了从空标签创建的SimpleXML对象外,对象总是被评估为true
。
答案 1 :(得分:2)
您可以使用自己的一个,也可以使用以下任何一种方法:
if(sizeof($array)){
// has array values
}
这将检查数组的大小。如果它返回0则为空 - 我喜欢使用它(或下面的计数),因为这是检查实际数组值的正确方法,例如if(sizeof($array) > 2){ // more than 2 array values }
。
if(count($array)){
// has array values
}
这与上述相同。
if(!empty($array)){
// its not empty
}
这将检查它是否为空(即没有数组值)或者是否根本没有设置(与isset()
相同)
但等等......
if(is_array($array)){
// its an array
}
总是很好的投入混合。字符串,数字,对象和任何不是数组的其他内容都将匹配以上所有内容。在开始尝试访问它之前,您需要确保您正在处理的内容是实际数组。
所以,这通常是我的代码:
if(is_array($array) && sizeof(array)){
// manipulate
}
else {
// isn't an array or doesn't have any values.
}
答案 2 :(得分:1)
使用empty()
是可行的方法。如果函数返回布尔值,则应该使用布尔检查。