Categorías
General

wp_list_pluck: extraer array de valores desde un array de arrays.

No es un traba lenguas, paso a explicarlo:

Imagina que tienes un array que a su vez contiene otros arrays, que todos tienen las mismas propiedades. Ej:

$recetas = [
  [
    'nombre' => 'macarrones',
    'ingredientes' => [ ... ],
    'preparacion' => "Calentamos agua en...",
  ],
  [
    'nombre' => 'salmorejo',
    'ingredientes' => [ ... ],
    'preparacion' => "Colocar los tomates...",
  ],
];

Y nosotros buscamos tener todos los nombres de las recetas que contiene el array, tal que así:

$nombres_recetas = [
   0 => 'macarrones',
   1 => 'salmorejo',
];

Para ello podemos usar la función de WordPress wp_list_pluck pasando como primer parámetro el array ($list) y como segundo parámetro la clave ($field):

$recetas = [
  [
    'nombre' => 'macarrones',
    'ingredientes' => [ ... ],
    'preparacion' => "Calentamos agua en...",
  ],
  [
    'nombre' => 'salmorejo',
    'ingredientes' => [ ... ],
    'preparacion' => "Colocar los tomates...",
  ],
];

$nombres_recetas = wp_list_pluck( $recetas, 'nombre' );

Y para rizar el rizo, imagina que quieres un array de nombres de recetas y su preparación. Para ello como primer parámetro volvemos a mandar el array, como segundo el campo ‘preparación’ y como tercero el campo que hará de key, en este caso ‘nombre’:

$recetas = [
  [
    'nombre' => 'macarrones',
    'ingredientes' => [ ... ],
    'preparacion' => "Calentamos agua en...",
  ],
  [
    'nombre' => 'salmorejo',
    'ingredientes' => [ ... ],
    'preparacion' => "Colocar los tomates...",
  ],
];

$nombres_recetas = wp_list_pluck( $recetas, 'preparacion', 'nombre' );

La salida sería la siguiente:

$nombres_recetas = [
  'macarrones' => "Calentamos agua en...",
  'salmorejo' => "Colocar los tomates...",
];

Es una función que no se usa muy frecuéntemente, pero ya que existe, hay que tenerla en cuenta para ocasiones como esta.

Facebooktwitterlinkedin

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *