【问题标题】:Combining two arrays to deep with PHP. The second array is multidimensional使用 PHP 将两个数组深度组合。第二个数组是多维的
【发布时间】:2018-05-27 09:40:55
【问题描述】:

我想合并两个数组。我该怎么做?

第一个数组:

大批 ( [E1] => #43 [B3] => Onur KAYA [B4] => 0555555555 [B5] => demo@gmail.com [E3] => 1 [E4] => 2017-12-24 14:31:11 [E5] => 2018-05-26 15:17:48 [B7] => 2018-05-16 15:33:06 [B8] => 塔斯拉克 [B9] => 2018-10-08 - 2019-03-11 [B10] => 4,7363 里拉 [B11] => 71.708 里拉(15,140 美元) [E7] => 美国 / 加里福尼亚 [E8] => Okul / Kampüs [E9] => Genel Akademik Sömestir - 5 日 / Sabit Tarihli [E10] => indirim kuponu - 33.376 里拉(7,570 美元) [E11] => 35.854 里拉(7,570 美元) [C12] => 2.368 里拉(500 美元) [F12] => 35.854 里拉(7,570 美元) )

第二个数组

大批 ( [0] => 数组 ( [A15] => Kurs Ücreti (Genel Akademik Sömesir - 5 日) [D15] => 22 哈夫塔 [E15] => 8,200 美元 [F15] => 8,200 美元 ) [1] => 数组 ( [A16] => Konaklama Ücreti (Aile Yanı İki Kişilik - 14 öğün/hafta (AKADEMİK SÖMESTİR 5 AY - 22 HAFTAYA KADAR)) [D16] => 22 哈夫塔 [E16] => 4,695 美元 [F16] => 4,695 美元 ) [2] => 数组 ( [A17] => 转移(奥克兰 Havaalanı'nden Transfer Hizmeti) [D17] => Tek yön [E17] => 145 美元 [F17] => $145 ) [3] => 数组 ( [A18] => Kayıt Ücreti [D18] => 1 [E18] => 185 美元 [F18] => $185 ) [4] => 数组 ( [A19] => Üniversite Yerleştirme Servisi - Temel [D19] => 1 [E19] => 175 美元 [F19] => 175 美元 ) [5] => 数组 ( [A20] => Seyahat ve Sağlık Sigortası [D20] => 22 哈夫塔 [E20] => 45 美元 [F20] => 990 美元 ) [6] => 数组 ( [A21] => Birebir Ders [D21] => 10 [E21] => 75 美元 [F21] => 750 美元 ) )

我想要的结果

大批 ( [E1] => #43 [B3] => Onur KAYA [B4] => 0555555555 [B5] => demo@gmail.com [E3] => 1 [E4] => 2017-12-24 14:31:11 [E5] => 2018-05-26 15:17:48 [B7] => 2018-05-16 15:33:06 [B8] => 塔斯拉克 [B9] => 2018-10-08 - 2019-03-11 [B10] => 4,7363 里拉 [B11] => 71.708 里拉(15,140 美元) [E7] => 美国 / 加里福尼亚 [E8] => Okul / Kampüs [E9] => Genel Akademik Sömestir - 5 日 / Sabit Tarihli [E10] => indirim kuponu - 33.376 里拉(7,570 美元) [E11] => 35.854 里拉(7,570 美元) [C12] => 2.368 里拉(500 美元) [F12] => 35.854 里拉(7,570 美元) [A15] => Kurs Ücreti (Genel Akademik Sömesir - 5 日) [D15] => 22 哈夫塔 [E15] => 8,200 美元 [F15] => 8,200 美元 [A16] => Konaklama Ücreti (Aile Yanı İki Kişilik - 14 öğün/hafta (AKADEMİK SÖMESTİR 5 AY - 22 HAFTAYA KADAR)) [D16] => 22 哈夫塔 [E16] => 4,695 美元 [F16] => 4,695 美元 [A17] => 转移(奥克兰 Havaalanı'nden Transfer Hizmeti) [D17] => Tek yön [E17] => 145 美元 [F17] => $145 [A18] => Kayıt Ücreti [D18] => 1 [E18] => 185 美元 [F18] => $185 [A19] => Üniversite Yerleştirme Servisi - Temel [D19] => 1 [E19] => 175 美元 [F19] => 175 美元 [A20] => Seyahat ve Sağlık Sigortası [D20] => 22 哈夫塔 [E20] => 45 美元 [F20] => 990 美元 [A21] => Birebir Ders [D21] => 10 [E21] => 75 美元 [F21] => 750 美元 )

【问题讨论】:

  • 普通的旧array_merge 可以工作。
  • 因为要分配一个新的key,所以需要组合成一个数组。就这样,我还没有达到一级

标签: php arrays multidimensional-array


【解决方案1】:

有点棘手,但是:

print_r(array_merge($a, array_merge(...$b)));
// `array_merge(...$b)` is done to flatten your second array

如果你使用 php5.5 及以上版本:

print_r(array_merge($a, call_user_func_array('array_merge', $b)));

【讨论】:

    【解决方案2】:

    这是array_map() 实现这一目标的另一种方法

    <?php
       array_map(function($arr) use(&$arr1){
           $arr1 = array_merge($arr1, $arr);
       }, $arr2);
       echo "<pre>";
       print_r($arr1);
    

    在这里查看工作中的https://paiza.io/projects/LTRGBa6QeMdQOsh2emfMsA?language=php

    【讨论】:

      【解决方案3】:

      已解决:

      $keys = array();
                  $values = 数组();
      
                  foreach ($services_array 作为 $service)
                  {
                      foreach ($service as $key => $value)
                      {
                          array_push($keys, $key);
                          array_push($values, $value);
                      }
                  }
      
                  $combine = array_combine($keys, $values);
                  $merged = array_merge($excel, $combine);

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2020-04-06
        • 2014-08-04
        • 1970-01-01
        • 2018-09-20
        • 1970-01-01
        相关资源
        最近更新 更多