测试数组中的空字符串并返回int(0或1) - 最佳实践

时间:2011-09-18 21:11:32

标签: php arrays

我的开始:

foreach($a as $b){if($b=='')return 0;}return 1;  // works but verbose

我的第二次尝试:

return (in_array('',$a)+0); // returns the opposite of what I need

我目前使用的是:

return in_array('',$a)?'0':'1';

每个JRL使用一次施法(最短)

return (int)!in_array('',$a);

我认为这是执行此操作的最佳方式,但只是想验证。这是测试数组中空值的最佳方法吗?

我知道这会测试0,NULL,FALSE或空字符串,即O.K。

5 个答案:

答案 0 :(得分:3)

这是对你的第二个声明的修改,应该有效。只是否定in_array的返回值:

return !in_array('',$a);

答案 1 :(得分:2)

您检查数组$a以查找字符串的建议不能写为:

return in_array('', $a)?0:1;

如果要查看0,NULL,FALSE或空字符串之间的差异,请向in_array函数添加第三个参数。此参数将强制函数也考虑元素的类型。换句话说,它使用===代替==进行比较。

return in_array('', $a, TRUE)?0:1;   //Empty string
return in_array(0, $a, TRUE)?0:1;    //Zero
return in_array(NULL, $a, TRUE)?0:1; //NULL
return in_array(FALSE, $a, TRUE)?0:1;//FALSE

另请参阅:http://www.php.net/manual/en/function.in-array.php

答案 2 :(得分:2)

其他选择:

return (int)!in_array('', $a));

答案 3 :(得分:0)

第一个不正确。

第二个不正确

第三个适合您的情况

OT:尝试使用codegolf?

答案 4 :(得分:0)

我认为就最佳做法而言,只需要!in_array('', $a)即可。

(通常来说)没有充分的理由将其转换为int。 PHP中的类型杂耍非常有效。这不是PHP的方式来做这样的演员表。