(array)$someemptyvariablethatisnotarray
返回的是 array([0] =>)
而不是 array()
当我在 foreach() 中使用一个空数组时,如何使它返回一个未迭代的空数组呢?
$var = array();
这将清空一个数组。这是你想要的吗?
if(!$variable){
return array();
}
你好吗?
我相信这就是您想要的:
$something = false;
foreach((array)(empty($something) ? null : $something) as $k){
echo 'never enters here';
}
当你设置"(array)false"时,你不会得到一个空数组,因为它意味着你将会有一个单一的元素,并且这个元素将被赋予"FALSE"值。
对于一个空字符串(不是null),(array)$emptystring将返回一个包含单一元素的数组,该元素是一个空字符串!
类似于执行以下操作:
array('');
$somevar = empty($somevar) ? array() : (array)$somevar;
foreach((array)$something as $k)...
的语法。有时候$something可能是“false”而不是一个数组,所以我不希望foreach迭代它。 - Alexwhile (($row = mysql_fetch_array($result)) !== false){ ... }
。这仍然是一个“检查”。;-) - Brad Christieunset($someemptyvariablethatisnotarray[0])
:)array()
。只需使用count()
,例如:if(count($array) == 0 ){ // 空数组 }
var_dump()
而不是print_r()
,它会显示数组中的值的类型! - powtac