Как отсортировать массив, используя подстроку значений другого массива

У меня есть что-то вроде словарного списка, где каждый словарь содержит число и слово. У меня есть тот же список словарного запаса, но не отсортированный, и на другом языке числа соответствуют значению. Таким образом, одно и то же слово имеет в обоих языках одно и то же число. Как я могу сопоставить оба словаря вместе и быть в том же порядке основного языка? Пример:

Input:
English Array (sorted)    German Array (unsorted)
74 Apple                  6 Auto
6 car                     564 Zug
564 train                 74 Apfel

Output: the German Array is sorted in the same way as the English Array

74 Apple                  74 Apfel
6 car                     6 Auto
564 train                 564 Zug

Помощь очень ценится. Спасибо 🙂

2

Решение

Входы:

$english=["74 Apple","6 car","564 train"];
$german=["6 Auto","564 Zug","74 Apfel"];

Сначала создайте массив с ключами в нужном порядке:

array_map(function($v)use(&$sorting_keys){return $sorting_keys[substr($v,0,strpos($v,' '))]='';},$english);
//var_export($sorting_keys);
// array (
//     74 => '',
//     6 => '',
//     564 => '',
// )

Затем переназначьте ключи на немецкие элементы массива на основе начального идентификатора

array_map(function($v)use(&$keyed_german){return $keyed_german[substr($v,0,strpos($v,' '))]=$v;},$german);
//var_export($keyed_german);
// array (
//     6 => '6 Auto',
//     564 => '564 Zug',
//     74 => '74 Apfel',
// )

Наконец, передать значения из $keyed_german в $sorting_keys (и сбросьте ключи, если вы хотите с array_values()):

$sorted_german=array_values(array_replace($sorting_keys,$keyed_german));
var_export($sorted_german);

Выход:

array (
0 => '74 Apfel',
1 => '6 Auto',
2 => '564 Zug',
)
1

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]