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


Testing an array for an empty string and returning an int (0 or 1) - best practice

开头:

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或空字符串,这是ok的

下面是对第二个语句的修改,应该可以工作。只对in_array的返回值取反值:

return !in_array('',$a);

其他选择:

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

您的建议检查数组$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

第一个不正确。

第二个不正确

第三个非常适合你的情况

OT:试图编码高尔夫?

我认为就最佳实践而言,简单的!in_array('', $a)是可行的。

(一般来说)没有很好的理由将其强制转换为int类型。PHP中的类型杂耍工作得非常好。这不是PHP的强制转换方式。