PHP array_column
La función de PHP array_column devuelve los valores correspondientes a una columna especificada del array proporcionado
Description / Descripciónarray_column(array $array, int|string|null $column_key, int|string|null $index_key = null): arraySintaxis / Sintax
$acolumn = array_column($array,$column_key,$index_key); $acolumn = array_column($array,$column_key)
Parámetros
$array
– el array de donde obtendremos nuestra columna
$column_key
-la columna de la que obtendremos los datos
$index_key
– este parámetro es opcional, en caso de no especificarlo el index en el array devuelto será numérico, en caso de especificarlo será una de las columnas de $array
entenderás más cuando veamos el ejemplo.
Retorno
devuelve un array con los valores de la columna especificada
Ejemplos de PHP array_column
Ejemplo1
He tomado el ejemplo de php.net y lo he modificado un poco para que podamos ver todo lo anterior mencionado de manera fácil:
Ejemplo de php.net modificado// Array representing a possible record set returned from a database $records = array( array( 'id' => 2135, 'first_name' => 'John', 'last_name' => 'Doe', ), array( 'id' => 3245, 'first_name' => 'Sally', 'last_name' => 'Smith', ), array( 'id' => 5342, 'first_name' => 'Jane', 'last_name' => 'Jones', ), array( 'id' => 5623, 'first_name' => 'Peter', 'last_name' => 'Doe', ) ); $first_names = array_column($records,'first_name','last_name'); print_r($first_names); $first_names = array_column($records,'first_name','id'); print_r($first_names); $first_names = array_column($records,'first_name'); print_r($first_names);
Array ( [Doe] => Peter [Smith] => Sally [Jones] => Jane ) Array ( [2135] => John [3245] => Sally [5342] => Jane [5623] => Peter ) Array ( [0] => John [1] => Sally [2] => Jane [3] => Peter )
Ejemplo2 – aplicando array_column a una consulta SQL
Supongamos que tenemos una base de datos «example_products» con la siguiente tabla:
SQL-- Crear la tabla 'productos' CREATE TABLE productos ( id INT AUTO_INCREMENT PRIMARY KEY, nombre VARCHAR(255), precio DECIMAL(10, 2), descripcion TEXT, categoria VARCHAR(50) ); -- Insertar 20 productos de ejemplo en la tabla 'productos' INSERT INTO productos (nombre, precio, descripcion, categoria) VALUES ('Producto 1', 19.99, 'Descripción del Producto 1', 'Electrónica'), ('Producto 2', 29.99, 'Descripción del Producto 2', 'Ropa'), ('Producto 3', 9.99, 'Descripción del Producto 3', 'Hogar'), ('Producto 4', 49.99, 'Descripción del Producto 4', 'Electrónica'), ('Producto 5', 14.99, 'Descripción del Producto 5', 'Ropa'), ('Producto 6', 39.99, 'Descripción del Producto 6', 'Hogar'), ('Producto 7', 24.99, 'Descripción del Producto 7', 'Electrónica'), ('Producto 8', 19.99, 'Descripción del Producto 8', 'Ropa'), ('Producto 9', 7.99, 'Descripción del Producto 9', 'Hogar'), ('Producto 10', 54.99, 'Descripción del Producto 10', 'Electrónica'), ('Producto 11', 12.99, 'Descripción del Producto 11', 'Ropa'), ('Producto 12', 34.99, 'Descripción del Producto 12', 'Hogar'), ('Producto 13', 29.99, 'Descripción del Producto 13', 'Electrónica'), ('Producto 14', 22.99, 'Descripción del Producto 14', 'Ropa'), ('Producto 15', 8.99, 'Descripción del Producto 15', 'Hogar'), ('Producto 16', 64.99, 'Descripción del Producto 16', 'Electrónica'), ('Producto 17', 17.99, 'Descripción del Producto 17', 'Ropa'), ('Producto 18', 42.99, 'Descripción del Producto 18', 'Hogar'), ('Producto 19', 31.99, 'Descripción del Producto 19', 'Electrónica'), ('Producto 20', 11.99, 'Descripción del Producto 20', 'Ropa');
¿Cómo podríamos obtener todos los productos de esta tabla y filtrar por una de sus columnas?
Ejemplo de array_column aplicado a una consulta MySQL$dbconnection = new mysqli('localhost', 'root', '', 'example_products'); $resultado = $dbconnection->query("SELECT * FROM productos"); $arr = $resultado->fetch_all(MYSQLI_ASSOC); $arr2 = array_column($arr,'nombre'); var_dump($arr2);
array(20) { [0]=> string(10) "Producto 1" [1]=> string(10) "Producto 2" [2]=> string(10) "Producto 3" [3]=> string(10) "Producto 4" [4]=> string(10) "Producto 5" [5]=> string(10) "Producto 6" [6]=> string(10) "Producto 7" [7]=> string(10) "Producto 8" [8]=> string(10) "Producto 9" [9]=> string(11) "Producto 10" [10]=> string(11) "Producto 11" [11]=> string(11) "Producto 12" [12]=> string(11) "Producto 13" [13]=> string(11) "Producto 14" [14]=> string(11) "Producto 15" [15]=> string(11) "Producto 16" [16]=> string(11) "Producto 17" [17]=> string(11) "Producto 18" [18]=> string(11) "Producto 19" [19]=> string(11) "Producto 20" }
Referencia: https://www.php.net/manual/en/function.array-column.php
Puedes ver otras funciones aplicables a arrays o que crean arrays en PHP array functions en español