我需要测试特定键/值是否存在,然后返回键/值所属的数组索引,而不必遍历数组的每个元素和/或级别。这可能吗?
[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
。我已经看到了各种确定键/值是否存在的方法,但是我没有看到用于返回其所属数组索引的非循环方法。
您可以组合使用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;
您还可以使用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',
),
)