在php中的多维数组中获取某些键及其值

时间:2017-04-22 16:37:50

标签: php

假设我有这个数组,

$cast = [
  'jon' => [
      'fullname' => 'Jon Snow',
      'class' => 'warrior',
   ],
   'margery' => [
      'fullname' => 'Margery Tyell',
      'class' => 'politician'
   ]
];

我如何获得密钥并且仅具有特定价值?像这样,

$name = ['jon'=>'Jon Snow', 'margery'=>'Margery Tyrell'];

是否有任何支持此功能的功能,所以它不必是循环?

任何答案都将不胜感激!

2 个答案:

答案 0 :(得分:2)

您可以遍历多维数组,并将内部数组的索引fullname处的键和值添加到新的一维数组中,如下所示:

$names = [];
foreach ($cast as $character => $character_details) {
   $names[$character] = $character_details['fullname'];
}

编辑或者,如果您不想循环遍历元素,可以使用array_map函数,该函数将函数作为参数,您可以在其中指定如何映射每个元素数组。在您的情况下,您只需返回元素的fullname

$names = array_map(
    function ($value) {
        return $value['fullname'];
    },
    $cast
);

答案 1 :(得分:0)

我猜你已经迭代它并只提取有趣的你的键。这里有一个例子:

function getValuesForKey($array, $key){
            $result = [];
            foreach($array as $k => $subarray){
                if(isset($subarray[$key])){
                    $result[$k] = $subarray[$key];
                }
            }
            return $result;
        }