目前我正在为数组中的多个API返回数据工作。所有这些API都返回具有类似键的数组
例如 从API A,B和C返回数据:
$a=array(1=>"abc",2=>"def");
$b=array(1=>"ghi",2=>"jkl");
$c=array(1=>"mno",2=>"pqr");
所有这些数组都有重复的数字键。我的要求是一个没有覆盖键和值的单个数组。
要求的结果
$=array(1=>"abc",2=>"def", 3=>"ghi", 4=>"jkl", 5=>"mno", 6=>"pqr");
我尝试了array_merge()
函数,但它覆盖了重复的密钥,array_merge_recursive()
函数将所有重复的密钥累积到另一个数组中。
答案 0 :(得分:2)
试试这个.......
$a=array(1=>"abc",2=>"def");
$b=array(1=>"ghi",2=>"jkl");
$c=array(1=>"mno",2=>"pqr");
$d = array();
foreach($a as $arr){
array_push($d, $arr);
}
foreach($b as $arr){
array_push($d, $arr);
}
foreach($c as $arr){
array_push($d, $arr);
}
print_r($d);
输出
Array ( [0] => abc [1] => def [2] => ghi [3] => jkl [4] => mno [5] => pqr )
我也尝试过使用数组合并& amp;它给了我关注o / p。
Array ( [0] => abc [1] => def [2] => ghi [3] => jkl [4] => mno [5] => pqr )
答案 1 :(得分:1)
对已接受答案的评论使事情变得更加清晰:
感谢Rohit,array_push方法适合我,虽然array_merge在数字键中工作,但不能使用字母数字键。
这是创建包含所有值的数组的较短替代方法,无论其键是什么:
$z = array_merge(
array_values($a),
array_values($b),
array_values($c)
)
这个答案会假设你在你的例子中犯了一个错误,因为它对你的要求没有意义。
考虑到:
array_merge()
我必须假设你的例子看起来如下:
// input
$a = array(1=>"abc", 2=>"def");
$b = array(3=>"ghi", 4=>"jkl");
$c = array(5=>"mno", 6=>"pqr");
// expected output
$z = array(1=>"abc", 2=>"def", 3=>"ghi", 4=>"jkl", 5=>"mno", 6=>"pqr");
使用Array Operators可以很容易地实现这一点。
$a + $b
$ a和$ b的联盟。+运算符返回附加到左侧数组的右侧数组;对于存在于两个数组中的键,将使用左侧数组中的元素,并且将忽略右侧数组中的匹配元素。
使解决方案简单如下:
$a = array(1=>"abc", 2=>"def");
$b = array(3=>"ghi", 4=>"jkl");
$c = array(5=>"mno", 6=>"pqr");
$z = $a+$b+$c;
print_r($z);
输出:
Array
(
[1] => abc
[2] => def
[3] => ghi
[4] => jkl
[5] => mno
[6] => pqr
)