我只需知道John, Mark, ...
即可得到数组的名称(id
)。
array_search
对我不起作用,我不知道......
Array (
[data] => Array
(
[John] => Array
(
[id] => 266
)
[Mark] => Array
(
[id] => 412
)
[Diana] => Array
(
[id] => 23
)
) )
答案 0 :(得分:0)
您可以循环遍历数组,迭代键和值,并查看值:
function findById(array $array, $id) {
foreach ($array as $name => $data) {
if ($data['id'] == $id) {
return $name;
}
}
return null;
}
echo findById($arr['data'], 412);
答案 1 :(得分:0)
如果array_search不适用于多维数组 你仍然可以做一个像:
这样的功能function findNamInArray($array, $id) {
foreach($array as $name => $subArray) {
if($subArray['id'] == $id)
return $name;
}
}
答案 2 :(得分:0)
使用PHP 5.5的array_column()函数
$myData = array (
'data' => array (
'John' => array (
'id' => 266,
),
'Mark' => array (
'id' => 412,
),
'Diana' => array (
'id' => 23,
),
)
);
$id = 412;
$result = array_search(
$id,
array_combine(
array_keys($myData['data']),
array_column($myData['data'], 'id')
)
);
var_dump($result);
甚至
$result = key(
array_filter(
$myData['data'],
function($value) use ($id) {
return $value['id'] == $id;
}
)
);
var_dump($result);
只要id值存在,将与早期版本的PHP一起使用
答案 3 :(得分:0)
为什么数组搜索不适合你?你使用foreach循环[数据]吗?
让我们假设(因为没有提供)你的整个数组被命名为$ array。
function getname($id){
foreach($array['data'] as $row){
$name = array_search($id,$row);
return $name;
}
}
例如,当您调用此函数时,。
$name = getname(23);
$ name将是'Diana';
还是我完全忽视了这一点?
希望这有帮助!
答案 4 :(得分:0)
如果您要多次查询此数据结构,则应该以更合适的形式转换数组。
您应该遍历数组并创建一个新的表单
$array = Array(
[266] => 'John',
[412] => 'Mark',
[23] => 'Diana',
...
)
然后您只需要使用$array[id]