开头:
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的强制转换方式。