我有一个数组,其中包含用户ID和根据交易分类的交易详细信息。现在我需要找到键值的位置
Array
(
[0] => Array
(
[userid] => 3
[transaction] => 1878
)
[1] => Array
(
[userid] => 2
[transaction] => 416
)
[2] => Array
(
[userid] => 5
[transaction] => 353
)
[3] => Array
(
[userid] => 4
[transaction] => 183
)
)
当我给用户ID 4时,它应该返回3
答案 0 :(得分:1)
我可能只是在这里迭代外部数组并检查键值:
$pos = -1;
for ($i = 0; $i < count($array); $i++) {
if ($array[$i]['userid'] == 4) {
$pos = $i;
}
}
if ($pos == -1) {
echo "user not found";
}
else {
echo "user found at position " . $pos;
}
答案 1 :(得分:1)
首先,使用array_column()来获取所有userid
,然后使用array_search()来获取数组键。
$searchId = 4;
echo array_search( $searchId, array_column($array, 'userid') ) );
答案 2 :(得分:0)
我更喜欢Calos's答案。
下面的代码模仿JavaScript的Array.prototype.findIndex
来实现您所需要的。使用这种方法,您可以通过使用回调函数来更灵活地搜索数组,这类似于JavaScript的实现方式。
您还可以轻松地在代码的其他部分重复使用它。
$data = [
[
'userid' => 3,
'transaction' => 1878
],
[
'userid' => 2,
'transaction' => 416
],
[
'userid' => 5,
'transaction' => 353
],
[
'userid' => 4,
'transaction' => 183
]
];
function findIndex($array, $method){
foreach($array as $index => $value){
if ($method($value, $index, $array) === true){
return $index;
}
}
}
echo findIndex($data, function($arr){
return $arr['userid'] == 5;
});
答案 3 :(得分:0)
构建自己的地图很简单:
<?php
$items =
[
'foo' =>
[
'id' => 23,
],
'bar' =>
[
'id' => 47
]
];
foreach($items as $k=>$v)
$ids_keys[$v['id']] = $k;
echo $ids_keys[47];
输出:
bar