PHP-获取多维数组中数组的名称

PHP-获取多维数组中数组的名称,php,arrays,Php,Arrays,我只需要知道id就可以获得数组的名称(John,Mark,) array\u search不适合我,我不知道 Array ( [data] => Array ( [John] => Array ( [id] => 266 ) [Mark] => Array (

我只需要知道
id
就可以获得数组的名称(
John,Mark,

array\u search
不适合我,我不知道

Array (
    [data] => Array
        (
            [John] => Array
                (
                    [id] => 266
                )

            [Mark] => Array
                (
                    [id] => 412
                )

            [Diana] => Array
                (
                    [id] => 23
                )
)    )

您可以循环遍历对键和值进行迭代的数组,并查看值:

function findById(array $array, $id) {
  foreach ($array as $name => $data) {
    if ($data['id'] == $id) {
      return $name;
    }
  }
  return null;
}

echo findById($arr['data'], 412);

如果数组搜索不适用于多维数组 您仍然可以创建如下函数:

function findNamInArray($array, $id) {
    foreach($array as $name => $subArray) {
        if($subArray['id'] == $id) 
          return $name;
    }
}
使用PHP5.5的函数

甚至

$result = key(
    array_filter(
        $myData['data'],
        function($value) use ($id) {
            return $value['id'] == $id;
        }
    )
);

var_dump($result);

只要id值存在,它将适用于早期版本的PHP。为什么数组搜索不适合您?您是否使用foreach在[data]上循环

让我们假设(因为没有提供)您的整个数组名为$array

function getname($id){
   foreach($array['data'] as $row){
       $name = array_search($id,$row);
       return $name;
   }
}
例如,当您像这样调用此函数时

$name = getname(23);
$name将是‘Diana’

还是我完全没有抓住重点


希望这有帮助

如果要多次查询此数据结构,则应以更合适的形式转换数组

您应该遍历数组并创建表单的新数组

$array = Array(
[266] => 'John',
[412] => 'Mark',
[23] => 'Diana',
... 
)

然后您只需要使用
$array[id]

进行查询,就可以使用
for($array as$key=>$value){echo$key.-“$value;}
遍历您的数组。这篇文章显示了一种可怕的缺乏努力的情况。毫无疑问,这只是一些数据的概要<代码>我没有任何线索不是正确的问题陈述不幸的是,我从API获得了数组。因此,我无法更改它。您可以在从API收到数据后更改数据;)在任何情况下,假设查询数组是O(常量),您将看到算法是O(n)。
$array = Array(
[266] => 'John',
[412] => 'Mark',
[23] => 'Diana',
... 
)