【问题标题】:Merge or Combine Two Array Into Single Array将两个数组合并或组合成一个数组
【发布时间】:2013-10-31 04:28:24
【问题描述】:

我有一个案例将两个数组创建或合并为一个数组。

这样的第一个数组:

Array // First Array
(
    [0] => Array
        (
            [hotel] => cempaka
            [vendor] => mas
        )

    [1] => Array
        (
            [hotel] => permata
            [vendor] => sip
        )
)

第二个数组:

Array
(
    [0] => Array
    (
        [order_type] => 1
        [currency] => 26
        [net] => 26000
        [rate] => 26000
        [amount] => 26000
        [bank_surcharge] => 26000
        [ticket] => 26000
        [profit] => 26000
        [selling_price] => 26000
        [description] => a
    )

[1] => Array
    (
        [order_type] => 2
        [currency] => 27
        [net] => 27000
        [rate] => 27000
        [amount] => 27000
        [bank_surcharge] => 27000
        [ticket] => 27000
        [profit] => 27000
        [selling_price] => 27000
        [description] => b
    )

[2] => Array
    (
        [order_type] => 5
        [currency] => 28
        [net] => 28000
        [rate] => 28000
        [amount] => 28000
        [bank_surcharge] => 28000
        [ticket] => 28000
        [profit] => 28000
        [selling_price] => 28000
        [description] => c
    )

[3] => Array
    (
        [order_type] => 3
        [currency] => 29
        [net] => 29000
        [rate] => 29000
        [amount] => 29000
        [bank_surcharge] => 29000
        [ticket] => 29000
        [profit] => 29000
        [selling_price] => 29000
        [description] => d
    )

[4] => Array
    (
        [order_type] => 4
        [currency] => 30
        [net] => 30000
        [rate] => 30000
        [amount] => 30000
        [bank_surcharge] => 30000
        [ticket] => 30000
        [profit] => 30000
        [selling_price] => 30000
        [description] => e
    )

[5] => Array
    (
        [order_type] => 6
        [currency] => 31
        [net] => 31000
        [rate] => 31000
        [amount] => 31000
        [bank_surcharge] => 31000
        [ticket] => 31000
        [profit] => 31000
        [selling_price] => 31000
        [description] => f
    )

[6] => Array
    (
        [order_type] => 1
        [currency] => 32
        [net] => 32000
        [rate] => 32000
        [amount] => 32000
        [bank_surcharge] => 32000
        [ticket] => 32000
        [profit] => 32000
        [selling_price] => 32000
        [description] => g
    )

[7] => Array
    (
        [order_type] => 2
        [currency] => 33
        [net] => 33000
        [rate] => 33000
        [amount] => 33000
        [bank_surcharge] => 33000
        [ticket] => 33000
        [profit] => 33000
        [selling_price] => 33000
        [description] => h
    )

[8] => Array
    (
        [order_type] => 5
        [currency] => 34
        [net] => 34000
        [rate] => 34000
        [amount] => 34000
        [bank_surcharge] => 34000
        [ticket] => 34000
        [profit] => 34000
        [selling_price] => 34000
        [description] => i
    )

[9] => Array
    (
        [order_type] => 3
        [currency] => 35
        [net] => 35000
        [rate] => 35000
        [amount] => 35000
        [bank_surcharge] => 35000
        [ticket] => 35000
        [profit] => 35000
        [selling_price] => 35000
        [description] => j
    )

[10] => Array
    (
        [order_type] => 4
        [currency] => 36
        [net] => 36000
        [rate] => 36000
        [amount] => 36000
        [bank_surcharge] => 36000
        [ticket] => 36000
        [profit] => 36000
        [selling_price] => 36000
        [description] => k
    )

[11] => Array
    (
        [order_type] => 6
        [currency] => 37
        [net] => 37000
        [rate] => 37000
        [amount] => 37000
        [bank_surcharge] => 37000
        [ticket] => 37000
        [profit] => 37000
        [selling_price] => 37000
        [description] => l
    )
)

然后这是我想要得到的输出:

Array
(
[0] => Array
    (
        [hotel] => cempaka
        [vendor] => mas
        [order_type] => 1
        [currency] => 26
        [net] => 26000
        [rate] => 26000
        [amount] => 26000
        [bank_surcharge] => 26000
        [ticket] => 26000
        [profit] => 26000
        [selling_price] => 26000
        [description] => a
    )

[1] => Array
    (
        [hotel] => cempaka
        [vendor] => mas
        [order_type] => 2
        [currency] => 27
        [net] => 27000
        [rate] => 27000
        [amount] => 27000
        [bank_surcharge] => 27000
        [ticket] => 27000
        [profit] => 27000
        [selling_price] => 27000
        [description] => b
    )

[2] => Array
    (
        [hotel] => cempaka
        [vendor] => mas
        [order_type] => 5
        [currency] => 28
        [net] => 28000
        [rate] => 28000
        [amount] => 28000
        [bank_surcharge] => 28000
        [ticket] => 28000
        [profit] => 28000
        [selling_price] => 28000
        [description] => c
    )

[3] => Array
    (
        [hotel] => cempaka
        [vendor] => mas
        [order_type] => 3
        [currency] => 29
        [net] => 29000
        [rate] => 29000
        [amount] => 29000
        [bank_surcharge] => 29000
        [ticket] => 29000
        [profit] => 29000
        [selling_price] => 29000
        [description] => d
    )

[4] => Array
    (
        [hotel] => cempaka
        [vendor] => mas
        [order_type] => 4
        [currency] => 30
        [net] => 30000
        [rate] => 30000
        [amount] => 30000
        [bank_surcharge] => 30000
        [ticket] => 30000
        [profit] => 30000
        [selling_price] => 30000
        [description] => e
    )

[5] => Array
    (
        [hotel] => cempaka
        [vendor] => mas
        [order_type] => 6
        [currency] => 31
        [net] => 31000
        [rate] => 31000
        [amount] => 31000
        [bank_surcharge] => 31000
        [ticket] => 31000
        [profit] => 31000
        [selling_price] => 31000
        [description] => f
    )

[6] => Array
    (
        [hotel] => permata
        [vendor] => sip
        [order_type] => 1
        [currency] => 32
        [net] => 32000
        [rate] => 32000
        [amount] => 32000
        [bank_surcharge] => 32000
        [ticket] => 32000
        [profit] => 32000
        [selling_price] => 32000
        [description] => g
    )

[7] => Array
    (
        [hotel] => permata
        [vendor] => sip
        [order_type] => 2
        [currency] => 33
        [net] => 33000
        [rate] => 33000
        [amount] => 33000
        [bank_surcharge] => 33000
        [ticket] => 33000
        [profit] => 33000
        [selling_price] => 33000
        [description] => h
    )

[8] => Array
    (
        [hotel] => permata
        [vendor] => sip
        [order_type] => 5
        [currency] => 34
        [net] => 34000
        [rate] => 34000
        [amount] => 34000
        [bank_surcharge] => 34000
        [ticket] => 34000
        [profit] => 34000
        [selling_price] => 34000
        [description] => i
    )

[9] => Array
    (
        [hotel] => permata
        [vendor] => sip
        [order_type] => 3
        [currency] => 35
        [net] => 35000
        [rate] => 35000
        [amount] => 35000
        [bank_surcharge] => 35000
        [ticket] => 35000
        [profit] => 35000
        [selling_price] => 35000
        [description] => j
    )

[10] => Array
    (
        [hotel] => permata
        [vendor] => sip
        [order_type] => 4
        [currency] => 36
        [net] => 36000
        [rate] => 36000
        [amount] => 36000
        [bank_surcharge] => 36000
        [ticket] => 36000
        [profit] => 36000
        [selling_price] => 36000
        [description] => k
    )

[11] => Array
    (
        [hotel] => permata
        [vendor] => sip
        [order_type] => 6
        [currency] => 37
        [net] => 37000
        [rate] => 37000
        [amount] => 37000
        [bank_surcharge] => 37000
        [ticket] => 37000
        [profit] => 37000
        [selling_price] => 37000
        [description] => l
    )
)

(这两个数组是我从通过 javascript 生成的动态字段中获得的) 任何解决方案将不胜感激。谢谢

【问题讨论】:

  • 你试过我的答案了吗..??
  • 它不能给我想要的输出。所以,基本上,我有多个由 javascript 和 html 组成的字段形式,我想用 php 将它的值传递给数组。所以我可以在屏幕上显示它或将它插入到数据库中。假设第一个数组是头,第二个数组是项目。如果是 head[0],那么它将与 items[0] 合并,直到 items[5]。如果是 head[1],那么它将与 items[6] 合并,直到 items[11]。如果是头[3],它将与项目[12]合并,直到项目[17]等等..先生有什么帮助吗?我想要它动态的先生..

标签: php arrays merge


【解决方案1】:

由于您尝试根据第二个数组的键号合并数组,因此请使用以下内容:

foreach($second_array as $key => $value){
    if($key >= 0 && $key <= 5){
        $new_array[$key] = array_merge($second_array[$key], $first_array[0]);
    }
    if($key >= 6 && $key <= 11){
        $new_array[$key] = array_merge($second_array[$key], $first_array[1]);
    }
    //etc.......
}

【讨论】:

  • 就像我在底部帖子中所说的那样,这是我从动态多字段中获得的两个数组(我没有显示完整的代码,因为我害怕它会占用很长的词)。所以,基本上,我有多个由 javascript 和 html 组成的字段形式,我想用 php 将它的值传递给数组。所以我可以在屏幕上显示它或将它插入到数据库中。假设第一个数组是头,第二个数组是项目。如果是 head[0],那么它将与 items[0] 合并,直到 items[5]。如果是 head[1],那么它将与 items[6] 合并,直到 items[11]。如果是 head[3],它将与 items[12] 合并,直到 items[17] 等等.. 先生有什么帮助吗?
  • 上面的代码满足了我的需要先生:) 但是如何使它成为动态的 fo 循环条件 $key (// 等等....我需要它是动态的)任何想法,解决方案先生?
  • @Lloyd Banks 我终于可以让它充满活力,先生,感谢您的解决方案
【解决方案2】:

试试看

$arr_cnt = count($arr1);
for($i = 0 ; $i < $arr_cnt ; $i++) {

    foreach($arr1[$i] as $key1 => $value1) {    
        $new_arr[$i][$key1] = $value1;
    }
    foreach($arr2[$i] as $key2 => $value2) {    
        $new_arr[$i][$key2] = $value2;
    }
}
print_r($new_arr);

【讨论】:

  • 它不能给我想要的输出。所以,基本上,我有多个由 javascript 和 html 组成的字段形式,我想用 php 将它的值传递给数组。所以我可以在屏幕上显示它或将它插入到数据库中。假设第一个数组是头,第二个数组是项目。如果是 head[0],那么它将与 items[0] 合并,直到 items[5]。如果是 head[1],那么它将与 items[6] 合并,直到 items[11]。如果是 head[3],它将与 items[12] 合并,直到 items[17] 等等.. 先生有什么帮助吗?
【解决方案3】:
 $outputArray = array();
 foreach ($firstArray as $location) {
     foreach ($secondArray as $option) {
         $outputArray[] = array_merge($location,$option);
     }
 }

【讨论】:

  • 我尝试了上面的代码,但不能满足我的需要。所以,基本上,我有多个由 javascript 和 html 组成的字段形式,我想用 php 将它的值传递给数组。所以我可以在屏幕上显示它或将它插入到数据库中。假设第一个数组是头,第二个数组是项目。如果是 head[0],那么它将与 items[0] 合并,直到 items[5]。如果是 head[1],那么它将与 items[6] 合并,直到 items[11]。如果是 head[3],它将与 items[12] 合并,直到 items[17] 等等.. 先生有什么帮助吗?
猜你喜欢
  • 2021-07-16
  • 1970-01-01
  • 2017-02-04
  • 1970-01-01
  • 2022-01-04
  • 2019-08-11
  • 1970-01-01
  • 2012-11-19
相关资源
最近更新 更多