使用相同的键合并数组

bey*_*ski 42 php array-merge

在一个软件中,我将两个数组合并为array_merge函数.但我需要将相同的数组(当然具有相同的键)添加到现有数组中.

问题:

 $A = array('a' => 1, 'b' => 2, 'c' => 3);
 $B = array('c' => 4, 'd'=> 5);

 array_merge($A, $B);

 // result
 [a] => 1 [b] => 2 [c] => 4 [d] => 5
Run Code Online (Sandbox Code Playgroud)

如你所见,'c' => 3错过了.

那么我怎么能用相同的键合并所有这些呢?

Jon*_*Jon 51

你需要使用array_merge_recursive而不是array_merge.当然,'c'在数组中只能有一个键等于,但关联的值将是包含3和的两个数组4.

看到它在行动.

  • @jon您提供的答案链接已断开。如果还可以,请内联代码吗? (2认同)

diE*_*cho 23

尝试使用array_merge_recursive

$A = array('a' => 1, 'b' => 2, 'c' => 3);
$B = array('c' => 4, 'd'=> 5);
$c = array_merge_recursive($A,$B);

echo "<pre>";
print_r($c);
echo "</pre>";
Run Code Online (Sandbox Code Playgroud)

将返回

Array
(
    [a] => 1
    [b] => 2
    [c] => Array
        (
            [0] => 3
            [1] => 4
        )

    [d] => 5
)
Run Code Online (Sandbox Code Playgroud)


小智 6

$arr1 = array(
   "0" => array("fid" => 1, "tid" => 1, "name" => "Melon"),
   "1" => array("fid" => 1, "tid" => 4, "name" => "Tansuozhe"),
   "2" => array("fid" => 1, "tid" => 6, "name" => "Chao"),
   "3" => array("fid" => 1, "tid" => 7, "name" => "Xi"),
   "4" => array("fid" => 2, "tid" => 9, "name" => "Xigua")
);
Run Code Online (Sandbox Code Playgroud)

如果你想转换这个数组如下:

$arr2 = array(
   "0" => array(
          "0" => array("fid" => 1, "tid" => 1, "name" => "Melon"),
          "1" => array("fid" => 1, "tid" => 4, "name" => "Tansuozhe"),
          "2" => array("fid" => 1, "tid" => 6, "name" => "Chao"),
          "3" => array("fid" => 1, "tid" => 7, "name" => "Xi")
    ),

    "1" => array(
          "0" =>array("fid" => 2, "tid" => 9, "name" => "Xigua")
     )
);
Run Code Online (Sandbox Code Playgroud)

所以,我的回答是这样的:

$outer_array = array();
$unique_array = array();
foreach($arr1 as $key => $value)
{
    $inner_array = array();

    $fid_value = $value['fid'];
    if(!in_array($value['fid'], $unique_array))
    {
            array_push($unique_array, $fid_value);
            unset($value['fid']);
            array_push($inner_array, $value);
            $outer_array[$fid_value] = $inner_array;


    }else{
            unset($value['fid']);
            array_push($outer_array[$fid_value], $value);

    }
}
var_dump(array_values($outer_array));
Run Code Online (Sandbox Code Playgroud)

希望这个答案会在某个时候对某人有所帮助。