【问题标题】:How to combine associative arrays with different keys?如何组合具有不同键的关联数组?
【发布时间】:2017-07-07 19:56:38
【问题描述】:

我正在尝试合并 5 个具有不同键的关联数组。这是对 5 个数组使用数组合并后的结果

array_merge($bucketExlData1, $bucketExlData2, $bucketExlData3, $bucketExlData4, $bucketExlData5)

结果

array:5 [▼
  0 => array:1 [▼
    "Name" => "John Test"
  ]
  1 => array:1 [▼
    "Archived-On" => "2016-05-02 18:20:26"
  ]
  2 => array:8 [▼
    "Phone" => "2132918968"
    "DOB" => "1800-01-01 00:00:00"
    "Referred-By-Practice" => "-"
    "Referred-By-Provider" => "-"
    "Last-Scheduled-To-Practice" => "-"
    "Last-Scheduled-To-Provider" => "-"
    "Last-Scheduled-To-Location" => "-"
    "Last-Scheduled-Date-of-Service" => "-"
  ]
  3 => array:1 [▼
    "Archived-Reason" => "no-need-to-schedule"
  ]
  4 => array:1 [▼
    "Notes" => "done"
  ]
]

我想让这个数组像

array:5 [▼   
    "Name" => "John Test"
    "Archived-On" => "2016-05-02 18:20:26"
    "Phone" => "2132918968"
    "DOB" => "1800-01-01 00:00:00"
    "Referred-By-Practice" => "-"
    "Referred-By-Provider" => "-"
    "Last-Scheduled-To-Practice" => "-"
    "Last-Scheduled-To-Provider" => "-"
    "Last-Scheduled-To-Location" => "-"
    "Last-Scheduled-Date-of-Service" => "-"
    "Archived-Reason" => "no-need-to-schedule"
    "Notes" => "done"
]

【问题讨论】:

  • 没有看到您的原始阵列很难确定。但您要合并的数组似乎是多维数组,这就是它没有按预期工作的原因。

标签: php arrays laravel array-merge array-reduce


【解决方案1】:

我假设你的数组是这样的

$arrayName = array(
    '0' => array("Name" => "John Test"),
    '1' => array("Archived-On" => "2016-05-02 18:20:26"),
    '2' => array(
           "Phone" => "2132918968",
        "DOB" => "1800-01-01 00:00:00",
        "Referred-By-Practice" => "-",
        "Referred-By-Provider" => "-",
        "Last-Scheduled-To-Practice" => "-",
        "Last-Scheduled-To-Provider" => "-",
        "Last-Scheduled-To-Location" => "-",
        "Last-Scheduled-Date-of-Service" => "-"
        )
    );

那就试试array_reduce

$result = array_reduce($arrayName, 'array_merge', array());

输出

Array ( 
    [Name] => John Test 
    [Archived-On] => 2016-05-02 18:20:26
    [Phone] => 2132918968 
    [DOB] => 1800-01-01 00:00:00 
    [Referred-By-Practice] => - 
    [Referred-By-Provider] => - 
    [Last-Scheduled-To-Practice] => - 
    [Last-Scheduled-To-Provider] => - 
    [Last-Scheduled-To-Location] => - 
    [Last-Scheduled-Date-of-Service] => - 
)

【讨论】:

    【解决方案2】:

    再试一次

    array_merge_recursive($bucketExlData1, [
        $bucketExlData2, 
        $bucketExlData3, 
        $bucketExlData4, 
        $bucketExlData5
    ]);
    

    或者

    array_merge_recursive(
        $bucketExlData1,
        $bucketExlData2, 
        $bucketExlData3, 
        $bucketExlData4, 
        $bucketExlData5
    );
    

    这里的函数定义:array_merge_recursive

    【讨论】:

      猜你喜欢
      • 2018-06-30
      • 2016-04-16
      • 1970-01-01
      • 2017-06-02
      • 1970-01-01
      • 2014-09-17
      • 2017-10-29
      • 2016-06-09
      • 1970-01-01
      相关资源
      最近更新 更多