带数字键的 PHP array_merge
如何使 array_merge() 覆盖两个数组中具有不同值但相同键索引的两个键?
例如,合并:
[0] => 'whatever'
与
[0] =>; '无论如何',[1] => 'a', [2] =>; 'b'
应该产生
[0] =>; '无论如何',[1] => 'a', [2] =>; 'b'
基本上我希望 array_merge 的行为方式与数组具有字符串键时的行为相同...
How can make it so array_merge() overwrites two keys with different values but same key index from two arrays?
for example, merging:
[0] => 'whatever'
with
[0] => 'whatever', [1] => 'a', [2] => 'b'
should produce
[0] => 'whatever', [1] => 'a', [2] => 'b'
Basically I want array_merge to bahave the same way it behaves if the arrays have string keys...
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(8)
使用
+
运算符。将
array_merge
与+
运算符进行比较:输出:
如果关联数组具有数字键,则
+
运算符 still 可以工作-of-order:输出:
注意 this 中的
array_merge
会创建一个新键。不理想...Use the
+
operator.Compare
array_merge
to+
operator:Output:
The
+
operator still works if your associative array has the numerical keys out-of-order:Output:
Notice
array_merge
in this case creates a new key. Not desirable...array_replace
正是这样做的!array_replace
does exactly this!手动编写非常容易:
更新:这与联合运算符(
return $first + $second;
)的行为不同,因为在这种情况下第二 当两个数组都具有相同键的元素时,数组获胜。但是,如果您交换参数的位置并将发生冲突时想要“获胜”的数组作为第一个操作数,则可以获得相同的行为。所以上面的函数的行为与
return $second + $first;
完全相同。Pretty easy to write manually:
Update: This behaves differently than the union operator (
return $first + $second;
) because in this case the second array wins when both have elements with the same key.However, if you switch the places of the arguments and place the array that you want to "win" in case of conflicts as the first operand, you can get the same behavior. So the function above behaves exactly like
return $second + $first;
.在我的项目中我使用我自己的
函数
In my project I use my own function
Usage
您应该使用
$a2+$a1
获得与array_merge($a1,$a2);
相同的结果代码:
输出:< /strong>
代码:
输出:
代码:
输出:
You should use
$a2+$a1
to get same result witharray_merge($a1,$a2);
Code:
Output:
Code:
Output:
Code:
Output:
您可以使用
array_merge()
,然后使用array_unique()
。You could use
array_merge()
and then usearray_unique()
.与错误使用“+”相比
Compare to WRONG use of "+"