Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 如何检查带有in_数组的空值,以及异常?_Php_Arrays - Fatal编程技术网

Php 如何检查带有in_数组的空值,以及异常?

Php 如何检查带有in_数组的空值,以及异常?,php,arrays,Php,Arrays,我试图找出如何检查数组中的空值,但有一些例外。以下是阵列: [name_first] => Name [name_last] => [email] => blah@blah.com [address] => [country] => USA 有两个空值-name\u last和address。代码如下: if (in_array(null, $data)) { echo 'empty values'; }else{ echo 'ok';

我试图找出如何检查数组中的空值,但有一些例外。以下是阵列:

[name_first] => Name
[name_last] => 
[email] => blah@blah.com
[address] => 
[country] => USA
有两个空值-
name\u last
address
。代码如下:

if (in_array(null, $data)) {
   echo 'empty values';
  }else{
     echo 'ok'; 
  }
它将返回
false
,因为
[address]
[name\u last]
值为
空。我如何可以忽略特定的键(比如-
[address]
)?基本上应该是这样的:

if (in_array(null, $data) **&& key_is_not('address', 'hatever')**) {
   echo 'empty values';
  }else{
     echo 'ok'; 
  }

尝试使用
array\u 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>";
$array\u 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.“
”; 如果(设置($value)&&$value!=“”){ $new_array_var[$key]=$value; } } 回声“; 回显“旧:
”; 打印(数组变量); 回声“

”; 回显“新建:
”; 打印(新数组变量); 回声“;
这将检查值是否已设置,长度是否大于0,而不是空字符串

$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";
}
更新

要从检查中排除特定键,可以采用以下方法:

$input_array = [
    'name_first' => 'Name',
    'name_last' => '',
    'email' => 'blah@blah.com',
    'address' => '',
    'country' => 'USA',
    ];
忽略特定键的筛选器数组,此处为
地址
名称\u last

$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\u filter
将取消设置内部指定的键

将根据是否找到匹配返回布尔值,如果需要键,只需使用
array\u search
更改\u array中的

if (in_array_except(null, $data, array("address"))) {
    echo 'empty values';
}else{
    echo 'ok';
}
在忽略数组列表中添加所有要忽略的键。
数组_键
将返回所有具有空值的键。 接下来,我们检查数组_键返回的数组大小是否大于0,并且如果执行循环,
$blank_value_键
中的键比
$ignore_数组
中的键更多。
注意:
array\u diff
将返回第二个数组中的所有可用值,但不返回第一个数组中的所有可用值

您也可以通过编写一个自定义函数来忽略该键,该函数将处理键异常,这样,如果您以后想要调整,您将能够更好地控制:

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
示例代码段的输出为:


但是它不能满足我的需要,Kausha,这和我忽略某些键或数组的时候差不多checking@Rossittenohhhh,然后你可以使用循环检查每个元素,不管你想检查什么。我知道数组中有元素。我只想从检查中排除某些密钥。请重新阅读我的问题。假设数组中有50个元素。但我想确保中只有48个元素不是空的,并且只有两个我不关心的特定元素,因此我想从检查中排除它们。您是循环遍历元素还是直接访问它们?此数组是数据库查询结果。有很多字段,我必须检查其中只有一部分是空的。我不想写一个很长的if/else语句,而是想分析数组并获取具有空值的键。但是-除了一些例外(请再次检查我的声明)。谢谢你,伙计!我想你必须更好地解释你的问题,对不起,谢谢。此代码将显示哪些键具有空值。但我需要排除,比方说,“地址”的检查。想象一下数组中有50个元素。但是我想确保只有48个键不是空的,而是两个我不关心的特定键,所以我想从检查中排除它们。你知道那些特定的键吗?如果它是一个特定的
索引
,为什么不先取消设置键,然后在检查后再将它们带回来?需要做的是:发送db请求以获取所有字段对于特定用户。假设有很多字段(50)。我需要检查并确认几乎所有的都不是空的。但不是所有的。大约3-5个键不需要检查,但需要在页面上返回(即使这些键是空的)。而此代码段可能会回答这个问题。请尝试用相关信息解释代码。看见
[name_first] => Name
[name_last] => 
[email] => blah@blah.com
[address] => 
[country] => USA
empty values