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