如何使用另一个数组值的子字符串对数组进行排序

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

 输入:
英语数组(已排序)德语数组(未排序)
74 Apple 6 Auto
6 car 564 Zug
564 train 74 Apfel

输出: 德语数组的排序方式与英语数组相同

744 Apple 74 Apfel
6 car 6 Auto
564 train 564 Zug
</ code> </ pre>

非常感谢帮助 。 谢谢:)</ p>
</ div>

展开原文

原文

I have something like a vocabulary list with every vocabulary containing a number and the word. I have the same list of vocabulary but unsorted and in another language, the numbers match the meaning. So the same word has in both languages the same number. How can I match both vocabularys together and being in the same order of the main language? Example:

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 

Help is much appreciated. Thank you :)

1个回答

Inputs:

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

First, create an array with keys in the desired order:

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

Next, reassign keys to the german array elements based on the leading id number

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

Finally, transfer the values from $keyed_german to $sorting_keys (and reset the keys if you wish with array_values()):

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

Output:

array (
  0 => '74 Apfel',
  1 => '6 Auto',
  2 => '564 Zug',
)
douzuan5365
douzuan5365 谢谢,多数民众赞成吧! 不幸的是,订单和编号对我来说至关重要。 再次感谢你,祝你有个美好的一天:)
3 年多之前 回复
dongshedan4672
dongshedan4672 是的,这是我的错,对不起。 我现在编辑了:)
3 年多之前 回复
drbz99867
drbz99867 我的英语不是最好的,所以我可能会错误地解释它。 我最初的计划是我有一个所有英文单词的数组,但已经按照我的方式排序。 编号不是连续的。 因此,数组中的第一个单词可能具有数字213,第二个单词具有数字12.我希望德语数组(未排序)具有与英语数组相同的顺序,非常类似于我给出的示例。 两个数组中的编号都是随机的。
3 年多之前 回复
dongzhi4470
dongzhi4470 首先,非常感谢你的帮助,我真的很感激。 我会明确地给你绿色勾号。
3 年多之前 回复
dongpo9071
dongpo9071 这几乎是我想要的。 也许我没有说清楚它足够好。 我希望主语言中的单词顺序保持不变。 所以我只想改变翻译语言的顺序以匹配我的主要语言。 就像在我的例子中一样,英语单词列表不会改变,只有德语单词以匹配英语单词的方式排列。
3 年多之前 回复
Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
立即提问
相关内容推荐