¿Cómo Combinar dos arrays en uno php?

publicado por: Anonymous

Estoy un poco empezando con php esto y me preguntaba si es posible combinar dos arrays, mas o menos mi idea es esta:

 $fruits = array("id"=>"1", "name"=>"banana");
   $vegetables = array("id"=>"1", "name"=>"cabbage");
   foreach($fruits as $fruit)
   {               
      $results = array("id"=>$fruit->id, "description"=>$fruit->name);
   }
  // $results = array("id"=>" ", "description"=>" ");
   return $results;

Quiero saber si puedo retornar, esos dos array dentro de uno solo, con esas dos keys “id” y “description“, hay algún método para hacerlo? he intentado con array_fill_keys pero no funciono. gracias.

solución

Crea un arreglo y agrega los valores de los otros arreglos al final del primer arreglo:

$results = array();
$results[] = $fruits;
$results[] = $vegetables;
return $results;

Por tu comentario, lo que necesitas no es solo unir los arreglos en un arreglo multidimensional, sino también agregar una función de mapeo para todos los elementos de este nuevo arreglo multidimensional. Puedes utilizar array_map para mapear los elementos del nuevo array multidimensional en uno nuevo con los datos que requieres.

$results = array();
$results[] = $fruits;
$results[] = $vegetables;
$mapeo = function($elemento) {
    return array(
        'id' => $elemento['id'],
        'description' => $elemento['name']
        );
}
return array_map($mapeo, $results);

La función array_map hará lo siguiente:

  1. Recorrer los elementos de $results provisto en el segundo argumento.
  2. Para cada elemento, aplicará la función $mapeo provista en el primer argumento.
  3. Devolver como resultado un arreglo nuevo que posea el resultado de aplicar $mapeo a cada elemento de $results.

Considerando que esto es lo que buscas, el código puede reducirse a:

$mapeo = function($elemento) {
    return array(
        'id' => $elemento['id'],
        'description' => $elemento['name']
        );
}
return array_map($mapeo, array($fruits, $vegetables));

Nota: estoy usando lambdas, habilitadas en PHP desde 5.3.0

Respondido por: user227

Leave a Reply

Your email address will not be published.