Blog de programación, errores, soluciones

Chose Language:
Author: Admin/Publisher |finished | checked

PHP array_column

La función de PHP array_column devuelve los valores correspondientes a una columna especificada del array proporcionado

Description / Descripción
array_column(array $array, int|string|null $column_key, int|string|null $index_key = null): array
Sintaxis / Sintax
$acolumn = array_column($array,$column_key,$index_key);
$acolumn = array_column($array,$column_key)
Tenga en cuenta que siempre estamos hablando de arrays multidimensionales, por ejemplo supongamos que en el array tenemos productos, directamente estamos hablando de una tabla que poseera el producto, stock, precio y talvez el id del proveedor ¿porque no?

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

Category: php
Something wrong? If you found an error or mistake in the content you can contact me on Twitter | @luisg2249_luis.
Last 4 post in same category