Php 使用array\u merge函数合并两个数组时出现问题
我有两个关联数组Php 使用array\u merge函数合并两个数组时出现问题,php,arrays,Php,Arrays,我有两个关联数组 $Array1 = array( 'abc'=> 'abc', 'def'=> 'def' ); $Array2 = array( '123'=> '123', '456'=> '456' ); 我正在使用array\u merge合并它们 $Array3 = array_merge($Array1, $Array2); 现在$Array3的值是这样的 Array ( [abc] => abc [def] =>
$Array1 = array(
'abc'=> 'abc',
'def'=> 'def'
);
$Array2 = array(
'123'=> '123',
'456'=> '456'
);
我正在使用array\u merge合并它们
$Array3 = array_merge($Array1, $Array2);
现在$Array3的值是这样的
Array
(
[abc] => abc
[def] => def
[0] => 123
[1] => 456
)
在我阅读php手册之前,它看起来真的很奇怪,该手册说,在结果数组中,带有数字键的输入数组中的值将用从零开始的递增键重新编号
我的任务是如何合并两个数组而不丢失它们的关联键。
两个数组都可以有公共的键,我不想丢失我的信息:(作者+
:
$Array1 = array(
'abc'=> 'abc',
'def'=> 'def'
);
$Array2 = array(
'123'=> '123',
'456'=> '456'
);
var_dump($Array1 + $Array2);
这将保留索引,但请注意,如果第一个数组中存在相同的键,则不会覆盖第一个数组的值
如果您希望覆盖工作,则有此功能:
var_dump(array_replace($Array1, $Array2));
通过+
:
$Array1 = array(
'abc'=> 'abc',
'def'=> 'def'
);
$Array2 = array(
'123'=> '123',
'456'=> '456'
);
var_dump($Array1 + $Array2);
这将保留索引,但请注意,如果第一个数组中存在相同的键,则不会覆盖第一个数组的值
如果您希望覆盖工作,则有此功能:
var_dump(array_replace($Array1, $Array2));
通过+
:
$Array1 = array(
'abc'=> 'abc',
'def'=> 'def'
);
$Array2 = array(
'123'=> '123',
'456'=> '456'
);
var_dump($Array1 + $Array2);
这将保留索引,但请注意,如果第一个数组中存在相同的键,则不会覆盖第一个数组的值
如果您希望覆盖工作,则有此功能:
var_dump(array_replace($Array1, $Array2));
通过+
:
$Array1 = array(
'abc'=> 'abc',
'def'=> 'def'
);
$Array2 = array(
'123'=> '123',
'456'=> '456'
);
var_dump($Array1 + $Array2);
这将保留索引,但请注意,如果第一个数组中存在相同的键,则不会覆盖第一个数组的值
如果您希望覆盖工作,则有此功能:
var_dump(array_replace($Array1, $Array2));
对于关联数组,请使用
$result = $Array1 + $Array2;
-但请注意,对于数字键,这也将重新索引:
$Array1 = array(
'abc',
'def'=> 'def'
);
$Array2 = array(
'123',
'456'
);
var_dump($Array1 + $Array2);
//array(3) { [0]=> string(3) "abc" ["def"]=> string(3) "def" [1]=> string(3) "456" }
如果阵列中有相同的键,则可以使用:
$result = array_reduce(array_keys($Array1), function($c, $x) use ($Array1)
{
$c[$x] = isset($c[$x])
?array_merge((array)$c[$x], [$Array1[$x]])
:$Array1[$x];
return $c;
}, $Array2);
对于关联数组,请使用
$result = $Array1 + $Array2;
-但请注意,对于数字键,这也将重新索引:
$Array1 = array(
'abc',
'def'=> 'def'
);
$Array2 = array(
'123',
'456'
);
var_dump($Array1 + $Array2);
//array(3) { [0]=> string(3) "abc" ["def"]=> string(3) "def" [1]=> string(3) "456" }
如果阵列中有相同的键,则可以使用:
$result = array_reduce(array_keys($Array1), function($c, $x) use ($Array1)
{
$c[$x] = isset($c[$x])
?array_merge((array)$c[$x], [$Array1[$x]])
:$Array1[$x];
return $c;
}, $Array2);
对于关联数组,请使用
$result = $Array1 + $Array2;
-但请注意,对于数字键,这也将重新索引:
$Array1 = array(
'abc',
'def'=> 'def'
);
$Array2 = array(
'123',
'456'
);
var_dump($Array1 + $Array2);
//array(3) { [0]=> string(3) "abc" ["def"]=> string(3) "def" [1]=> string(3) "456" }
如果阵列中有相同的键,则可以使用:
$result = array_reduce(array_keys($Array1), function($c, $x) use ($Array1)
{
$c[$x] = isset($c[$x])
?array_merge((array)$c[$x], [$Array1[$x]])
:$Array1[$x];
return $c;
}, $Array2);
对于关联数组,请使用
$result = $Array1 + $Array2;
-但请注意,对于数字键,这也将重新索引:
$Array1 = array(
'abc',
'def'=> 'def'
);
$Array2 = array(
'123',
'456'
);
var_dump($Array1 + $Array2);
//array(3) { [0]=> string(3) "abc" ["def"]=> string(3) "def" [1]=> string(3) "456" }
如果阵列中有相同的键,则可以使用:
$result = array_reduce(array_keys($Array1), function($c, $x) use ($Array1)
{
$c[$x] = isset($c[$x])
?array_merge((array)$c[$x], [$Array1[$x]])
:$Array1[$x];
return $c;
}, $Array2);
试试这个代码:)它会工作的
function my_merge($array1,$array2)
{
foreach($array2 as $key => $value)
{
$array1[$key] = $value;
}
return $array1;
}
$Array1 = array(
'abc'=> 'abc',
'def'=> 'def'
);
$Array2 = array(
'123'=> '123',
'456'=> '456'
);
$Array3 = my_merge($Array1, $Array2);
试试这个代码:)它会工作的
function my_merge($array1,$array2)
{
foreach($array2 as $key => $value)
{
$array1[$key] = $value;
}
return $array1;
}
$Array1 = array(
'abc'=> 'abc',
'def'=> 'def'
);
$Array2 = array(
'123'=> '123',
'456'=> '456'
);
$Array3 = my_merge($Array1, $Array2);
试试这个代码:)它会工作的
function my_merge($array1,$array2)
{
foreach($array2 as $key => $value)
{
$array1[$key] = $value;
}
return $array1;
}
$Array1 = array(
'abc'=> 'abc',
'def'=> 'def'
);
$Array2 = array(
'123'=> '123',
'456'=> '456'
);
$Array3 = my_merge($Array1, $Array2);
试试这个代码:)它会工作的
function my_merge($array1,$array2)
{
foreach($array2 as $key => $value)
{
$array1[$key] = $value;
}
return $array1;
}
$Array1 = array(
'abc'=> 'abc',
'def'=> 'def'
);
$Array2 = array(
'123'=> '123',
'456'=> '456'
);
$Array3 = my_merge($Array1, $Array2);
两个数组都可以有公共密钥,我不想丢失我的信息:(.我更新了这个问题。@RiteshChandora那么你期望的结果是什么,'common\u key'=>array('value1','value2')
?这两个数组都是多维的。你的代码不适合我。array\u replace\u recursive()工作得很好。谢谢你的帮助,两个数组都可以有公共密钥,我也不想泄露我的信息。:(.我更新了这个问题。@RiteshChandora那么你期望的结果是什么,'common\u key'=>array('value1','value2')
?这两个数组都是多维的。你的代码不适合我。array\u replace\u recursive()工作得很好。谢谢你的帮助,两个数组都可以有公共密钥,我也不想泄露我的信息。:(.我更新了这个问题。@RiteshChandora那么你期望的结果是什么,'common\u key'=>array('value1','value2')
?这两个数组都是多维的。你的代码不适合我。array\u replace\u recursive()工作得很好。谢谢你的帮助,两个数组都可以有公共密钥,我也不想泄露我的信息。:(.我更新了这个问题。@RiteshChandora那么你期望的结果是什么,'common\u key'=>array('value1','value2')
?这两个数组都是多维的。你的代码不适合我。array\u replace\u recursive()工作得很好。谢谢你的帮助,两个数组都可以有公共密钥,我也不想泄露我的信息。:(.我更新了question.Hm,我已经更新了(在这种情况下,您将拥有这些键的值数组)这两个数组都可以有公共键,我不想丢失我的信息。:(.我更新了question.Hm,我已经更新了(在这种情况下,您将拥有这些键的值数组)两个数组都可以有公共密钥,我不想丢失我的信息。:(.我更新了问题.Hm,我已经更新了(在这种情况下,您将有这样的密钥的值数组)两个数组都可以有公共密钥,我也不想丢失我的信息。:(.我更新了问题.Hm,我已经更新了。)(因此,在这种情况下,您将拥有此类键的值数组)