简体   繁体   English

检查关联数组中的给定键是否有值

[英]Check if a given key in an associative array has a value

Assume I have an array like this:假设我有一个这样的数组:

$Data = array(
    'User1' => array(
        'FirstName'  => 'John',
        'MiddleName' => '',
        'LastName'   => 'Doe',
    ),
    'User2' => array(
        'FirstName'  => 'John',
        'MiddleName' => '',
        'LastName'   => 'Smith',
    ),
);

I want to check, if no dataset in the array has a value for MiddleName.我想检查,如果数组中没有数据集具有 MiddleName 的值。
I wanted to ask, if there is a built-in function/one-liner in PHP to do something like this:我想问一下,PHP 中是否有内置函数/单线可以执行以下操作:

IF( AllEmpty($Data["MiddleName"]) ) { Do something }

Thank you very much!非常感谢!

If you insist on a one-liner, it can be done like this:如果您坚持使用单线,则可以这样做:

if (!array_filter(array_column($Data, 'MiddleName'))) {
    echo 'Nothing here';
}

How it works:这个怎么运作:

  • array_column obtains all the values of 'MiddleName' as an array ['', ''] array_column获取 'MiddleName' 的所有值作为数组['', '']
  • array_filter (without any additional parameters) returns an array with any falsey values removed, resulting in an empty array as empty strings are considered falsey array_filter (不带任何附加参数)返回一个删除了任何虚假值的数组,导致一个空数组,因为空字符串被认为是虚假的
  • since an empty array is itself falsey, we negate the expression so that the condition can be met (it could be also written as array_filter(array_column($Data, 'MiddleName')) === [] if we want to be explicit or even as empty(array_filter... )由于空数组本身是错误的,因此我们否定表达式以便满足条件array_filter(array_column($Data, 'MiddleName')) === []如果我们想要显式或即使是empty(array_filter...

using loop to check each element使用循环检查每个元素

foreach($Data as $x => $value) {
  if(!middlename_check($value['MiddleName'])){
    echo 'MiddleName is empty!';
  }
  // Do something
}

function middlename_check($middlename) {
  if($middlename != '') {
    return true;
  }
  return false;
}

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM