这是我的数组输出
Array
(
[1] => 1
[2] => 2
[3] =>
)
我怎么知道[3] =>
是空的?
foreach ($array as $key => $value) {
if (empty($value))
echo "$key empty <br/>";
else
echo "$key not empty <br/>";
}
我的输出显示全部不是空的。检查是否为空的正确方法是什么?
另一个解决方案:
$array = array('one', 'two', '');
if(count(array_filter($array)) == count($array)) {
echo 'OK';
} else {
echo 'ERROR';
}
http://codepad.org/zF9KkqKl
此外,
$containsEmpty = in_array("", $arr);
应该更快一点,因为它不必跟踪整个数组,也不必创建新的数组。
请注意,两种解决方案都将0
、false
、null
和空数组视为空值。
如果您还认为一个值是空的,如果它只由类似空格的字符组成,请参阅
它按预期工作,第三个是空
http://codepad.org/yBIVBHj0
也许试着修剪它的值,以防第三个值只是一个空格。
foreach ($array as $key => $value) {
$value = trim($value);
if ($value === '')
echo "$key is empty <br/>";
else
echo "$key is not empty <br/>";
}
或者使其成为功能
function arrayHasEmptyValue(array $array) {
foreach ($array as $value) {
if (trim($value) === '') {
return true;
}
}
return false;
}
对于不同的任务,当您需要判断所有数组值是否为空时,可以使用以下命令:
if (array_filter($array)) {
echo 'OK';
} else {
echo 'EMPTY ARRAY';
}
如果值只包含空格,则您也认为值为空,如下方
$myArray = array('A', 'B', ' ');
这是的解决方案
if(in_array('', array_map('trim', $myArray), true)) {
echo 'Found empty value in your array!';
}
您可以使用array_diff()
和array_diff_key()
:
$array = array('one', 'two', '');
$emptyKeys = array_diff_key(array_diff($array,array()),$array);
array_diff()
提取所有不相同的项(因此省略空白),array_diff_key
将差异返回给原始数组。
这里有一个简单的解决方案,可以检查数组中的空键值并返回键。
$a = array('string', '', 5);
echo array_search(null, $a);
// Echos 1
检查数组是否包含空键值。试试这个。
$b = array('string','string','string','string','','string');
if (in_array(null, $b)) {
echo 'We found a empty key value in your array!';
}
im在我的项目中这样使用来检查这个数组
im发布类似array('username' => 'john','surname' => 'sins');
的表单数据
public function checkArrayKeyExist($arr) {
foreach ($arr as $key => $value) {
if (!strlen($arr[$key])) {
return false;
}
}
return true;
}
试试这个:
<?php
$data=array(
'title' => 'Test Name Four',
'first_name' => '',
'last_name' => 'M',
'field_company' => 'ABC',
'email' => '',
'client_phone_number' => '',
'address_line_1' => '',
'address_line_2' => 'Address 3',
'address_line_3' => '',
'address_line_4' => '',
'post_code' => '',
);
echo '<pre>';
print_r($data);
foreach ($data as $key => $case ) {
echo "$key => ".is_multiArrayEmpty($case)."<br>";
}
function is_multiArrayEmpty($multiarray) {
if(is_array($multiarray) and !empty($multiarray)){
$tmp = array_shift($multiarray);
if(!is_multiArrayEmpty($multiarray) or !is_multiArrayEmpty($tmp)){
return false;
}
return true;
}
if(empty($multiarray)){
return true;
}
return false;
}
?>