Cómo obtener una matriz de "clave" específica en una matriz multidimensional sin bucle [duplicado]

Resuelto ifaour asked hace 54 años • 4 respuestas

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 ids 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.

ifaour avatar Jan 01 '70 08:01 ifaour
Aceptado

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_mapcon 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);
phihag avatar Nov 03 '2011 12:11 phihag

Si ides la primera clave de la matriz, esto servirá:

$ids = array_map('current', $users);

Sin embargo, no necesariamente debes confiar en esto. :)

deceze avatar Nov 03 '2011 12:11 deceze