【问题标题】:PHP multidimensional array search keyPHP多维数组搜索键
【发布时间】:2020-06-10 02:27:54
【问题描述】:
$list[7362][0]['value'] = 'apple';
$list[7362][1]['value'] = 'orange';
$list[9215][0]['value'] = 'lemon';

我想要值“橙色”的键。我尝试使用 array_search 和 array_column,但显然我有问题 array_column。

$key = array_search('orange', array_column($list, 'value'));

如前所述

PHP multidimensional array search by value

但我的情况略有不同。密钥应返回 7362。

【问题讨论】:

    标签: php


    【解决方案1】:

    你可以试试这样的:

    <?php
    
    $list = array();
    
    $list[7362][0]['value'] = 'apple';
    $list[7362][1]['value'] = 'orange';
    $list[9215][0]['value'] = 'lemon';
    
    foreach ($list as $keynum=>$keyarr) {
        foreach ($keyarr as $key=>$index) {
            if (array_search('orange', $index) !== false) {
                echo "orange found in $key >> $keynum";
            }   
        }   
    }
    
    ?>
    

    您可以根据自己的目的选择回显echo $keynum;

    遍历数组并找出您在哪里找到orange

    您可以将其重构为如下函数:

    <?php
    
    function getKeys($list, $text) {
        foreach ($list as $keynum=>$keyarr) { 
            foreach ($keyarr as $key=>$index) { 
                if (array_search($text, $index) !== false) {
                    return "$text found in $key >> $keynum";
                }
            }
        }
    
        return "not found";
    }
    
    $list = array();
    
    $list[7362][0]['value'] = 'apple';
    $list[7362][1]['value'] = 'orange';
    $list[9215][0]['value'] = 'lemon';
    
    echo getKeys($list, 'lemon');
    
    ?>
    

    echo getKeys($list, 'lemon'); 会给你lemon found in 0 &gt;&gt; 9215

    echo getKeys($list, 'orange'); 会给你orange found in 1 &gt;&gt; 7362

    echo getKeys($list, 'apple'); 会给你apple found in 0 &gt;&gt; 7362

    【讨论】:

      【解决方案2】:

      array_column 在该级别嵌套到很远,所以只需循环:

      foreach($list as $k => $v) {
          if(in_array('orange', array_column($v, 'value'))) {
              $key = $k;
              break;
          }
      }
      

      如果可以有多个,则创建一个数组,不要break

              $key[] = $k;
              //break;
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2017-11-16
        • 2020-01-15
        • 2017-01-13
        • 2014-06-27
        • 1970-01-01
        • 1970-01-01
        • 2019-10-16
        相关资源
        最近更新 更多