簡體   English   中英

PHP,合並兩個數組

[英]Php, merge two arrays

我有兩個數組。 第一個$letters很簡單:

[5, 89, 1, 212]

第二個$some_data

[
 89 => 'A',
 41 => 'B',
 1  => 'C',
 5  => 'D',
 200 => 'E',
 212 => 'F'
]

如何合並這些數組以獲得:

[
89 => 'A',
1  => 'C',
5  => 'D',
212 => 'F'
]

我已經嘗試過

foreach($some_data as $id => $title) {
        if (array_key_exists($id, $letters)) {
            $some_arr[$id] = $title;
        }
    }

但是由於某種原因,它無法正常工作,並且$some_arr被復制。 填充$some_arr此函數在循環內調用並接受一個參數。 使用此參數,我填充了數組$letters 每次(通常是6次)數組$letter不同

$some_arr是用這種方式填充的,所以沒有重復:

foreach($cont_cntrs as $cntr_id) {
        $cntrs_byletter[$cntr_id] = $countries[$cntr_id];
    }

但這不是按$countries id的順序排序

您只想保留$letters數組中存在的所有條目。 因此,使用數組交集

$some_arr = array_intersect_key($some_data, array_flip($letters));

您可以在array_key_exits上使用“ in_array”函數,

當您將值與另一個數組進行比較時。

$some_arr = [];
foreach($some_data as $id => $title) {
  if (in_array($id, $letters)) {
      $some_arr[$id] = $title;
    }
}

$letters數組上循環,然后使用array_key_exists函數檢查鍵值對是否存在。 如果存在,則將新數組中的鍵值對分配為:

    $some_arr = [];
    foreach($letters as $value) {
            if (array_key_exists($value, $some_data)) {
                $some_arr[$value] = $some_data[$value];
            }
        }
asort($some_arr);//sort associative arrays in ascending order, according to the value

預期產量:

    Array
(
    [89] => A
    [1] => C
    [5] => D
    [212] => F
)

暫無
暫無

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

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