我试图找出如何检查具有某些异常的数组的空值。这是数组:
[name_first] => Name
[name_last] =>
[email] => blah@blah.com
[address] =>
[country] => USA
有两个空值 - name_last
& address
。这是代码:
if (in_array(null, $data)) {
echo 'empty values';
}else{
echo 'ok';
}
它将false
返回[address]
,[name_last]
值为empty
。如何忽略特定键(假设为[address]
)?基本上应该看起来像这样:
if (in_array(null, $data) **&& key_is_not('address', 'hatever')**) {
echo 'empty values';
}else{
echo 'ok';
}
答案 0 :(得分:1)
这将检查是否设置了值并且长度是否大于0,而不是空字符串。
foreach($elements as $key => $data)
{
if(!in_array($key, ['address', 'something']))
{
if(count($data) > 0)
{
//stuff
}
}
}
答案 1 :(得分:1)
试试这个:
$data = array('name_first' => "Name",
'name_last' => "",
'email' => "blah@blah.com",
'address' => "",
'country' => "USA");
foreach ($data as $key => $value) {
if($value=="")
echo "$key is Empty\n";
}
<强>更新强>
要从支票中排除特定键,您可以这样做:
$data = array('name_first' => "",
'name_last' => "",
'email' => "blah@blah.com",
'address' => "",
'country' => "");
$array = array("name_first","country");
foreach ($data as $key => $value) {
if($value=="" and (!in_array($key, $array)))
echo "$key is Empty\n";
}
答案 2 :(得分:1)
$input_array = [
'name_first' => 'Name',
'name_last' => '',
'email' => 'blah@blah.com',
'address' => '',
'country' => 'USA',
];
过滤数组,忽略特定键,此处为address
和name_last
$ignore_search = in_array('', array_filter($input_array, function($k){
return !in_array($k, ['address', 'name_last']);
}, ARRAY_FILTER_USE_KEY));
此处array_filter
将取消设置内部指定的键。
根据发现的匹配程序返回布尔值,如果你想要密钥,只需用in_array
更改array_search
。
答案 3 :(得分:1)
你也可以通过编写一个能处理密钥异常的自定义函数来忽略密钥,这样你就可以更好地控制它,如果你想在以后稍微调整一下:
if (in_array_except(null, $data, array("address"))) {
echo 'empty values';
}else{
echo 'ok';
}
该功能将是:
function in_array_except($needle, $haystack, $exception = array(), $strict = false) {
if ($strict) {
foreach($haystack as $needle_field => $item) {
if (!in_array($needle_field, $exception) && $item === $needle)
return true;
}
} else {
foreach($haystack as $needle_field => $item) {
if (!in_array($needle_field, $exception) && $item == $needle)
return true;
}
}
return false;
}
使用您当前的数据集:
[name_first] => Name
[name_last] =>
[email] => blah@blah.com
[address] =>
[country] => USA
示例代码段的输出是:
empty values
答案 4 :(得分:0)
尝试array_search()
,如下所示::
if (array_search("", $arr)) {
echo 'empty values';
} else {
echo 'ok';
}
**更新**
$array_var = array("11" => 111, "22" => 222, "33" => 333, "44" => 444, "55" => "", "66" => 666);
$new_array_var = array();
foreach ($array_var as $key => $value) {
// echo $key . "==>" . $value . "<br/>";
if (isset($value) && $value != "") {
$new_array_var[$key] = $value;
}
}
echo "<pre>";
echo "OLD : <br/>";
print_r($array_var);
echo "<br/><br/>";
echo "NEW : <br/>";
print_r($new_array_var);
echo "</pre>";
答案 5 :(得分:0)
$ignore_array = array("address");
$blank_value_keys = array_keys($data,"");
if(sizeof($blank_value_keys)>0 && sizeof(array_diff($ignore_array,$blank_value_keys)>0){
echo "Empty";
}else{
echo "NOT Empty";
}
在忽略数组列表中添加要忽略的所有键。
array_keys
将返回所有具有空值的键。
接下来,我们检查array_keys返回的数组大小是否大于0,并且$blank_value_keys
中的键多于$ignore_array
而不是if循环执行。
注意: array_diff
将返回第二个数组中可用的所有值,但不会返回第一个