(PHP 5 >= 5.5.0, PHP 7)
array_column — Devuelve los valores de una sola columna del array de entrada
array_column() devuelve los valores de una sola columna de
input
, identificado por la clave de columna
column_key
. Opcionalmente, se
podría proporcionar una clave de índice, index_key
,
para indexar los valores del array devuelto por los valores de la columna
index_key
del array de entrada.
input
Un array multidimensional o un array de objetos desde el que extraer una columna de valores. Si se proporciona un array de objetos, entonces se podrá extraer directamente las propiedades públicas. Para poder extraer las proiedades protegidas o privadas, la clase debe implementar los métodos mágicos __get() y __isset().
column_key
La columna de valores a devolver. Este valor podría ser una clave de tipo integer de la
columna de la cual obtener los datos, o podría ser una clave de tipo string para un
array asociativo o nombre de propiedad. También prodría ser NULL
para devolver
array completos u objetos (útil junto con
index_key
para reindexar el array).
index_key
La columna a usar como los índices/claves para el array devuelto. Este valor podría ser la clave de tipo integer de la columna, o podría ser el nombre de la clave de tipo string. El valor es cast como es habitual para las claves de array (Sin embargo, también se permiten los objetos que soportan la conversión a string).
Devuelve un array de valores que representa una sola columna del array de entrada.
Versión | Descripción |
---|---|
7.0.0 |
Se añadió la capacidad de que el parámetro input sea
un array de objetos.
|
Ejemplo #1 Obtener la columna de nombres del conjunto de resultados
<?php
// Array representando un conjunto de registros posibles devueltos desde una base de datos
$registros = array(
array(
'id' => 2135,
'nombre' => 'John',
'apellido' => 'Doe',
),
array(
'id' => 3245,
'nombre' => 'Sally',
'apellido' => 'Smith',
),
array(
'id' => 5342,
'nombre' => 'Jane',
'apellido' => 'Jones',
),
array(
'id' => 5623,
'nombre' => 'Peter',
'apellido' => 'Doe',
)
);
$nombres = array_column($registros, 'nombre');
print_r($nombres);
?>
El resultado del ejemplo sería:
Array ( [0] => John [1] => Sally [2] => Jane [3] => Peter )
Ejemplo #2 Obtener la columna de apellidos del conjunto de resultados, indexada por la columna "id"
<?php
// Se emplea el array $registros del Ejemplo #1
$apellidos = array_column($registros, 'apellido', 'id');
print_r($apellidos);
?>
El resultado del ejemplo sería:
Array ( [2135] => Doe [3245] => Smith [5342] => Jones [5623] => Doe )
Ejemplo #3 Obtener la columna de nombres de usuarios de la propiedad pública "nombre_usuario" de un objeto
<?php
class Usuario
{
public $nombre_usuario;
public function __construct(string $nombre_usuario)
{
$this->nombre_usuario = $nombre_usuario;
}
}
$usuarios = [
new Usuario('usuario 1'),
new Usuario('usuario 2'),
new Usuario('usuario 3'),
];
print_r(array_column($usuarios, 'nombre_usuario'));
?>
El resultado del ejemplo sería:
Array ( [0] => usuario 1 [1] => usuario 2 [2] => usuario 3 )
Ejemplo #4 Obtener la columna de nombres de la propiedad privada "nombre" de un objeto empleando el método mágico __get().
<?php
class Persona
{
private $name;
public function __construct(string $nombre)
{
$this->nombre = $nombre;
}
public function __get($prop)
{
return $this->$prop;
}
public function __isset($prop) : bool
{
return isset($this->$prop);
}
}
$gente = [
new Persona('Fred'),
new Persona('Jane'),
new Persona('John'),
];
print_r(array_column($gente, 'nombre'));
?>
El resultado del ejemplo sería:
Array ( [0] => Fred [1] => Jane [2] => John )