【发布时间】:2016-02-14 20:58:45
【问题描述】:
我需要合并两个具有以下格式的数组:
array(9)
{
[0]=> array(1) { ["BLA"]=> string(7) "bis 050" }
[1]=> array(1) { ["BLA"]=> string(7) "bis 060" }
[2]=> array(1) { ["BLA"]=> string(7) "bis 070" }
[3]=> array(1) { ["BLA"]=> string(7) "bis 080" }
[4]=> array(1) { ["BLA"]=> string(7) "bis 090" }
[5]=> array(1) { ["BLA"]=> string(7) "bis 100" }
[6]=> array(1) { ["BLA"]=> string(7) "bis 110" }
[7]=> array(1) { ["BLA"]=> string(7) "bis 120" }
[8]=> array(1) { ["BLA"]=> string(6) "gr 120" }
}
array(5)
{
[0]=> array(2) {
["BLA"]=> string(7) "bis 050"
["Amount"]=> string(3) "832" }
[1]=> array(2) {
["BLA"]=> string(7) "bis 060"
["Amount"]=> string(3) "448" }
[2]=> array(2) {
["BLA"]=> string(7) "bis 090"
["Amount"]=> string(4) "1216" }
[3]=> array(2) {
["BLA"]=> string(7) "bis 100"
["Amount"]=> string(4) "1024" }
[4]=> array(2) {
["BLA"]=> string(7) "bis 110"
["Amount"]=> string(3) "896" }
}
我尝试了array_merge() 和array_merge_recursive(),但它不起作用。
我的目标是将第二个键及其值从array2(Amount)写入数组1,其中第一个键(BLA)的值相同。另外我想写"Amount":"0",如果array2中没有对应的值。有没有办法用php做到这一点?
结果应如下所示:
Result:
{
[0]=> array(2) {
["BLA"]=> string(7) "bis 050"
["Amount"]=> string(3) "832" }
[1]=> array(2) {
["BLA"]=> string(7) "bis 060"
["Amount"]=> string(3) "448" }
[2]=> array(2) {
["BLA"]=> string(7) "bis 070"
["Amount"]=> string(1) "0" }
[3]=> array(2) {
["BLA"]=> string(7) "bis 080"
["Amount"]=> string(1) "0" }
[4]=> array(2) {
["BLA"]=> string(7) "bis 090"
["Amount"]=> string(4) "1216" }
[5]=> array(2) {
["BLA"]=> string(7) "bis 100"
["Amount"]=> string(4) "1024" }
[6]=> array(2) {
["BLA"]=> string(7) "bis 110"
["Amount"]=> string(3) "896" }
[7]=> array(2) {
["BLA"]=> string(7) "bis 120"
["Amount"]=> string(1) "0" }
[8]=> array(2) {
["BLA"]=> string(6) "gr 120"
["Amount"]=> string(1) "0" }
}
【问题讨论】:
-
数组键必须是唯一的
-
stackoverflow.com/a/4769240/1604068 这可能会对你有所帮助
-
不仅是合并,还改变了默认结构。另一个数组中的键没有退出时发生了什么?
-
@Dagon 他们是独一无二的......
-
我同意 Dagon 的观点,但它的布局方式似乎键是唯一的,但数组的主索引是隐藏的数字索引。 IE: '0 => array("BLA" => "bis 050", "Amoun......