¿Existe una función para extraer una 'columna' de una matriz en PHP?
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')
Aceptado
A partir de PHP 5.5
usted 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
¿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;
}
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);