Как объединить два массива в один php?


я немного начинаю с php этого, и мне было интересно, можно ли объединить два arrays, более или менее моя идея такова:

 $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;

я хочу знать, могу ли я вернуть эти два array внутри одного, с этими двумя keys "id " и " description", Есть ли способ сделать это? я пробовал array_fill_keys, но это не сработало. Благодарю.

 3
php
Author: Alan, 2016-01-28

3 answers

Создает массив и добавляет значения других массивов в конец первого массива:

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

Для вашего комментария вам нужно не только объединить массивы в многомерный массив, но и добавить функцию сопоставления для всех элементов этого нового многомерного массива. Вы можете использовать array_map чтобы сопоставить элементы нового многомерного массива с новыми данными, которые вам нужны.

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

Функция array_map он будет делать следующее:

  1. перебирать элементы $results, предоставленные во втором аргументе.
  2. для каждого элемента вы примените функцию $mapeo, предоставленную в первом аргументе.
  3. возвращает в результате новое расположение, которое имеет результат применения $mapeo к каждому элементу $results.

Учитывая, что это то, что вы ищете, код может быть сведен к:

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

Примечание: я использую лямбды, включенные в PHP с 5.3.0

 7
Author: , 2016-01-28 15:09:42

Посмотрите на функцию array_mege() самого PHP

Пример, который они ставят:

<?php
$array1    = array("color" => "red", 2, 4);
$array2    = array("a", "b", "color" => "green", "shape" => "trapezoid", 4);

$resultado = array_merge($array1, $array2);

print_r($resultado);
?>

Результатом примера будет:

Array
(
    [color] => green
    [0] => 2
    [1] => 4
    [2] => a
    [3] => b
    [shape] => trapezoid
    [4] => 4
)
 4
Author: Webserveis, 2016-01-28 13:52:09

Использование метода array_merge()

<?php
$fruits =  array("id"=>"1", "name"=>"banana");
$vegetables= array("id"=>"1", "name"=>"cabbage");
$result = array_merge($fruits , $vegetables);
print_r($result);
?>

Пример:

, Например, array_merge() http://php.net/manual/en/function.array-merge.php

<?php
$array1 = array("color" => "red", 2, 4);
$array2 = array("a", "b", "color" => "green", "shape" => "trapezoid", 4);
$result = array_merge($array1, $array2);
print_r($result);
?>

Пример будет иметь выход:

Array
(
    [color] => green
    [0] => 2
    [1] => 4
    [2] => a
    [3] => b
    [shape] => trapezoid
    [4] => 4
)
 1
Author: Jorgesys, 2016-01-28 15:04:52