2016-06-05 2 views
0

У меня есть массив источника, который выглядит следующим образом:Простой способ создания массива из значений ключа и определенного подмассива?

$data = array(
    'foo' => array(
     'bar' => 'foo_bar', 
     'baz' => 'foo_baz' 
    ), 
    'fizz' => array(
     'bar' => 'fizz_bar', 
     'baz' => 'fizz_baz' 
    ) 
); 

Я хотел бы создать еще один массив, выбрав ключ: bar или baz, который будет возвращать все корневые ключи со значениями указанного ключа ?

some_function($data, 'bar') == array(
    'foo' => 'foo_bar', 
    'fizz' => 'fizz_bar' 
); 

Есть ли встроенная функция php для генерации следующих результатов без выполнения моих собственных циклов?

ответ

1
$data = array(
    'foo' => array(
     'bar' => 'foo_bar', 
     'baz' => 'foo_baz' 
    ), 
    'fizz' => array(
     'bar' => 'fizz_bar', 
     'baz' => 'fizz_baz' 
    ) 
); 

Для выбора bar:

$result = array_combine(
    array_keys($data), 
    array_column($data, 'bar') 
); 

Вот пример:

php > var_dump(array_combine(array_keys($data), array_column($data, 'bar'))); 
array(2) { 
    ["foo"]=> 
    string(7) "foo_bar" 
    ["fizz"]=> 
    string(8) "fizz_bar" 
} 

Обратите внимание, что array_column() была введена в PHP 5.5.

+0

Я написал тот же ответ, поэтому, если вы не возражаете, я просто добавил пример, который я собирался показать, и примечание о версии 5.5+. Откат, если вам не нравится :) – Will

Смежные вопросы