【问题标题】:How can I check the value of nested items of array?如何检查数组嵌套项的值?
【发布时间】:2016-08-31 22:17:42
【问题描述】:

我有一个这样的数组:

Array
(
    [0] => Array
        (
            [score] => 80
            [seen] => 1
        )

    [1] => Array
        (
            [score] => 4
            [seen] => 1
        )
    [2] => Array
        (
            [score] => 4
            [seen] => 0
        )
    [3] => Array
        (
            [score] => 4
            [seen] => 0
        )
    [4] => Array
        (
            [score] => 4
            [seen] => 0
        )
)

我需要检查是否有[seen] = 1

if ( /* ??? */ ){
    echo "Yes, at least one of [seen] keys is 1";
} else {
    echo "No, all [seen] keys are 0";
}  

我怎样才能创造这样的条件?

【问题讨论】:

  • 如果您只需要查找seen = 1 一次,那么普通的foreach 循环就可以工作,只需添加一个if 条件检查是否seen == 1 和如果是break;跨度>
  • 看看array_column()in_array()
  • 和往常一样,数组咒语功能一班:array_sum(array_column('seen', $array)) > 0

标签: php arrays function


【解决方案1】:

使用简单的foreach 循环可以帮助您

foreach ($array as $arr) {
 if ($arr['seen']==1){
   echo 'SEEN';
  }
}

【讨论】:

    【解决方案2】:
    $seen = false; 
    foreach($my_array as $el){
        if($el['seen']){
            $seen = true;
            break;
        }
    }
    

    $seen 如果至少有一个 [seen] 键是 1,则为真

    如果所有 [seen] 键都是 0,则$seen 为 false

    【讨论】:

      【解决方案3】:

      采用函数式方法,您可以使用测试'seen' == 1 的函数过滤数组。然后,如果结果数组非空,您就知道有些元素具有 'seen' == 1 值。

      <?php
      
      $ar = array(
          0 => array(
              'score' => 80,
              'seen' => 1 ),
          1 => array(
              'score' => 4,
              'seen' => 1 ),
          2 => array(
              'score' => 4,
              'seen' => 0 )
              );
      
      if ( array_filter($ar, function($x) { return $x['seen'] == 1; }) ){
          echo "Yes, at least one of [seen] keys is 1";
      } else {
          echo "No, all [seen] keys are 0";
      }  
      
      ?>
      

      当然,这种方法的效率低于那些在找到单个'seen' == 1 元素后立即跳出循环的方法。但它确实在条件中为您提供了一个表达式。

      【讨论】:

        【解决方案4】:
        $seen = in_array(1, array_column($array, 'seen'));
        

        文档:

        【讨论】:

          猜你喜欢
          • 2021-03-31
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2021-12-31
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多