¿Existe una función para extraer una 'columna' de una matriz en PHP?

Resuelto Skilldrick asked hace 54 años • 14 respuestas

Tengo una serie de matrices, con la siguiente estructura:

array(array('page' => 'page1', 'name' => 'pagename1')
      array('page' => 'page2', 'name' => 'pagename2')
      array('page' => 'page3', 'name' => 'pagename3'))

¿Existe una función incorporada que devolverá una nueva matriz con solo los valores de las claves de 'nombre'? entonces obtendría:

array('pagename1', 'pagename2', 'pagename3')
Skilldrick avatar Jan 01 '70 08:01 Skilldrick
Aceptado

A partir de PHP 5.5usted puede utilizar array_column():

<?php
$samples=array(
            array('page' => 'page1', 'name' => 'pagename1'),
            array('page' => 'page2', 'name' => 'pagename2'),
            array('page' => 'page3', 'name' => 'pagename3')
            );
$names = array_column($samples, 'name');
print_r($names);

Véalo en acción

John Conde avatar Mar 30 '2013 16:03 John Conde

¿Por qué tiene que ser una función integrada? No, no hay ninguno, escribe el tuyo propio.

Aquí hay uno agradable y fácil, a diferencia de otros en este hilo.

$namearray = array();

foreach ($array as $item) {
    $namearray[] = $item['name'];
}

En algunos casos en los que las claves no tienen nombre, podrías hacer algo como esto

$namearray = array();

foreach ($array as $key => $value) {
    $namearray [] = $value;
}
Anti Veeranna avatar Sep 29 '2009 21:09 Anti Veeranna

Aquí tienes una forma funcional de hacerlo:

$data = array(
            array('page' => 'page1', 'name' => 'pagename1'),
            array('page' => 'page2', 'name' => 'pagename2'),
            array('page' => 'page3', 'name' => 'pagename3'));

$result = array_map(create_function('$arr', 'return $arr["name"];'), $data);
print_r($result);
fuentesjr avatar Sep 29 '2009 21:09 fuentesjr