我有一个阵列
$data = array( 'a'=>'0', 'b'=>'0', 'c'=>'0', 'd'=>'0' );
Run Code Online (Sandbox Code Playgroud)
我想检查所有数组值是否为零.
if( all array values are '0' ) {
echo "Got it";
} else {
echo "No";
}
Run Code Online (Sandbox Code Playgroud)
谢谢
Pas*_*TIN 25
我想你可以使用array_filter()得到一个非零的所有项目的数组; 并empty()在结果数组上使用,以确定它是否为空.
例如,使用示例数组:
$data = array(
'a'=>'0',
'b'=>'0',
'c'=>'0',
'd'=>'0' );
Run Code Online (Sandbox Code Playgroud)
使用以下代码部分:
$tmp = array_filter($data);
var_dump($tmp);
Run Code Online (Sandbox Code Playgroud)
会显示一个空数组,不包含非零元素:
array(0) {
}
Run Code Online (Sandbox Code Playgroud)
并使用这样的东西:
if (empty($tmp)) {
echo "All zeros!";
}
Run Code Online (Sandbox Code Playgroud)
会得到以下输出:
All zeros!
Run Code Online (Sandbox Code Playgroud)
另一方面,使用以下数组:
$data = array(
'a'=>'0',
'b'=>'1',
'c'=>'0',
'd'=>'0' );
Run Code Online (Sandbox Code Playgroud)
$ tmp数组将包含:
array(1) {
["b"]=>
string(1) "1"
}
Run Code Online (Sandbox Code Playgroud)
而且,因此,不会是空的.
请注意,不将回调作为第二个参数传递array_filter()将起作用,因为(引用):
如果没有提供回调,则将删除所有输入等于FALSE的条目(请参阅 转换为布尔值).
怎么样:
// ditch the last argument to array_keys if you don't need strict equality
$allZeroes = count( $data ) == count( array_keys( $data, '0', true ) );
Run Code Online (Sandbox Code Playgroud)