Php, объединить два массива - PullRequest
       2

Php, объединить два массива

0 голосов
/ 18 сентября 2018

У меня есть два массива.Первый $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'
]

Iуже пробовал

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];
    }

Но это не былоt отсортировано по $countries идентификатору заказа

Ответы [ 3 ]

0 голосов
/ 18 сентября 2018

вы можете использовать функцию 'in_array' вместо array_key_exits,

Когда вы сравниваете значения с другим массивом.

$some_arr = [];
foreach($some_data as $id => $title) {
  if (in_array($id, $letters)) {
      $some_arr[$id] = $title;
    }
}
0 голосов
/ 18 сентября 2018

Выполните цикл в массиве $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
)
0 голосов
/ 18 сентября 2018

Вы просто хотите сохранить все записи, которые существуют в массиве $letters. Так что используйте пересечение массива :

$some_arr = array_intersect_key($some_data, array_flip($letters));
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...