簡體   English   中英

將兩個數組合並為一個,相應地合並數據

[英]Merge two arrays in one, combining the data correspondingly

有了這兩個數組,它們分別具有完全相同的項數(3)和分別對應的數據,我如何將它們合並到一個唯一的數組中,如我在數組3示例中所示那樣合並數據

// array 1
[ ▼ 3 items
  {
    "email": "john-doe@example.tld"
  },
  {
    "email": "joe-bloggs@example.tld"
  },
  {
    "email": "foo-bar@example.tld"
  }
]

// array 2
[ ▼ 3 items
  {
    "name": "John Doe"
  },
  {
    "name": "Joe Bloggs"
  },
  {
    "name": "Foo Bar"
  }
]

我如何將它們合並成這樣:

// array 3
[ ▼ 3 items
  {
    "name": "John Doe",
    "email": "john-doe@example.tld"
  },
  {
    "name": "Joe Bloggs",
    "email": "joe-bloggs@example.tld"
  },
  {
    "name": "Foo Bar",
    "email": "foo-bar@example.tld"
  }
]

我正在使用laravel php。 我已經嘗試了array_merge($array1, $array2)和一些laravel的函數$res = $array1->merge($array2); 但我無法獲得想要的結果。

array_merge不合並元素,它只是將數組相互連接。

您可以使用array_map() array_merge()在每對元素上調用array_merge()

$result = array_map('array_merge', $array1, $array2);

使用Laravel的Combine()方法

$collection = collect(['name', 'email']);
for($i=0;$i<count($array1);$i++){
$combined[] = $collection->combine([$array2[$i],$array1[$i]]);
}
$combined->all();

或只是使用收藏

$collection = collect($array1, $array2);

我不知道您的輸入數據是什么樣子,所以我不得不做一些假設。 想法是遍歷所有電子郵件,在電子郵件數組中占據其位置,然后使用該位置定義名稱在名稱數組中的名稱。

$emails = [
    ["email" => "john-doe@example.tld"], 
    ["email" => "joe-bloggs@example.tld"], 
    ["email" => "foo-bar@example.tld"]
];

$names = [
    ["name" => "John Doe"],
    ["name" => "Joe Bloggs"],
    ["name" => "Foo Bar"]
];

$names_and_emails = [];

foreach ($emails as $key => $email) {
    $names_and_emails[] = ["email" => $email['email'], "name" => $names[$key]['name']];
}

var_dump($names_and_emails);

輸出:

array(3) {
  [0]=>
  array(2) {
    ["email"]=>
    string(20) "john-doe@example.tld"
    ["name"]=>
    string(8) "John Doe"
  }
  [1]=>
  array(2) {
    ["email"]=>
    string(22) "joe-bloggs@example.tld"
    ["name"]=>
    string(10) "Joe Bloggs"
  }
  [2]=>
  array(2) {
    ["email"]=>
    string(19) "foo-bar@example.tld"
    ["name"]=>
    string(7) "Foo Bar"
  }
}

希望這可以幫助。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM