我的开始:
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。
答案 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
答案 2 :(得分:2)
其他选择:
return (int)!in_array('', $a));
答案 3 :(得分:0)
第一个不正确。
第二个不正确
第三个适合您的情况
OT:尝试使用codegolf?
答案 4 :(得分:0)
我认为就最佳做法而言,只需要!in_array('', $a)
即可。
(通常来说)没有充分的理由将其转换为int。 PHP中的类型杂耍非常有效。这不是PHP的方式来做这样的演员表。