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

时间:2014-12-24 14:43:48

标签: php arrays

我只需知道John, Mark, ...即可得到数组的名称(id)。

array_search对我不起作用,我不知道......

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

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

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

5 个答案:

答案 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]

进行查询