Cómo obtener una matriz de "clave" específica en una matriz multidimensional sin bucle [duplicado]
Supongamos que tengo la siguiente matriz multidimensional (obtenida de MySQL o de un servicio):
array(
array(
[id] => xxx,
[name] => blah
),
array(
[id] => yyy,
[name] => blahblah
),
array(
[id] => zzz,
[name] => blahblahblah
),
)
¿Podemos obtener una matriz de id
s en una llamada a función PHP " integrada "? o una línea de código?
Soy consciente del bucle tradicional y obtengo el valor, pero no necesito esto:
foreach($users as $user) {
$ids[] = $user['id'];
}
print_r($ids);
Quizás algunos array_map()
puedan call_user_func_array()
hacer la magia.
Desde PHP 5.5, puedes usar array_column
:
$ids = array_column($users, 'id');
Esta es la opción preferida en cualquier proyecto moderno. Sin embargo, si debe soportar PHP<5.5, existen las siguientes alternativas:
Desde PHP 5.3, puedes usarlo array_map
con una función anónima, como esta:
$ids = array_map(function ($ar) {return $ar['id'];}, $users);
Antes (Técnicamente PHP 4.0.6+) , debes crear una función anónima con create_function
:
$ids = array_map(create_function('$ar', 'return $ar["id"];'), $users);
Si id
es la primera clave de la matriz, esto servirá:
$ids = array_map('current', $users);
Sin embargo, no necesariamente debes confiar en esto. :)