【问题标题】:php get array index of object having specific key valuephp获取具有特定键值的对象的数组索引
【发布时间】:2019-11-04 16:57:46
【问题描述】:

我需要测试是否存在特定的键/值,然后返回该键/值所属的数组索引,而不必遍历数组的每个元素和/或级别。这可能吗?

 [0: 
     { regional:
          [ 0 :
               {
               ID: 1000
               someInfoA : valueA
               someInfoB : valueB
               }
          ]
          [ 1 :
               {
               ID: 1001
               someInfoA : valueA
               someInfoB : valueB
               }
          ]
          [ 2 :
               {
               ID: 1002
               someInfoA : valueA
               someInfoB : valueB
               }
          ]
          [ 3 :
               {
               ID: 1003
               someInfoA : valueA
               someInfoB : valueB
               }
          ]
     }
     { national : 
       [ ... ]
       [ ... ]
     }
] 

在这个数据示例中,我需要查看ID: 1002 是否存在,如果存在,则返回数组索引:[2],如果不存在则返回false。我已经看到了各种确定键/值是否存在的方法,但我还没有看到用于返回它所属的数组索引的非循环方法。

【问题讨论】:

    标签: php object multidimensional-array


    【解决方案1】:

    您可以组合使用array_column()array_search()。看看here

    $records = [
        [
            'id' => 2135,
            'first_name' => 'John',
            'last_name' => 'Doe',
        ],
        [
            'id' => 3245,
            'first_name' => 'Sally',
            'last_name' => 'Smith',
        ],
        [
            'id' => 5342,
            'first_name' => 'Jane',
            'last_name' => 'Jones',
        ],
        [
            'id' => 5623,
            'first_name' => 'Peter',
            'last_name' => 'Doe',
        ]
    ];
    $key = array_search(3245, array_column($records, 'id'));
    echo $key;
    

    【讨论】:

    • 太棒了!谢谢你。我对此进行了测试,并且效果很好。但是如果没有找到 ID 值怎么办——它会返回什么?我测试了 $key 是空白的 - 这是一个空的 "" 值吗?
    • 如果没有找到,则返回false
    【解决方案2】:

    您也可以使用 array_column() 创建一个以 id 为键的新数组。然后,您可以直接访问所有字段。

    $arrWithIdAsKey = array_column($records, null, 'id');
    
    echo "<pre>".var_export($arrWithIdAsKey,true)."</pre>";
    

    示例输出:

    array (
      2135 => 
      array (
        'id' => 2135,
        'first_name' => 'John',
        'last_name' => 'Doe',
      ),
      3245 => 
      array (
        'id' => 3245,
        'first_name' => 'Sally',
        'last_name' => 'Smith',
      ),
      5342 => 
      array (
        'id' => 5342,
        'first_name' => 'Jane',
        'last_name' => 'Jones',
      ),
      5623 => 
      array (
        'id' => 5623,
        'first_name' => 'Peter',
        'last_name' => 'Doe',
      ),
    )
    

    【讨论】:

      猜你喜欢
      • 2017-08-22
      • 1970-01-01
      • 2021-12-12
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-12-05
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多