如何使用另一个数组的值

时间:2017-04-20 18:21:34

标签: php arrays string sorting matching

我有类似词汇表的内容,每个词汇包含一个数字和单词。我有相同的词汇表但未分类,而在另一种语言中,数字符合意义。所以同一个词在两种语言中都有相同的数字。如何将两个词汇表匹配在一起并且与主要语言的顺序相同?例如:

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 

非常感谢帮助。谢谢:))

1 个答案:

答案 0 :(得分:1)

输入:

$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 => '',
// )

接下来,根据前导ID号

将键重新分配给德语数组元素
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',
)