php获取具有特定键值的对象的数组索引

rol*_*ger 2 php object multidimensional-array

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

 [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 : 
       [ ... ]
       [ ... ]
     }
] 
Run Code Online (Sandbox Code Playgroud)

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

Vla*_*dan 5

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

$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;
Run Code Online (Sandbox Code Playgroud)