2017-04-20 2 views
2

数字とその単語を含むすべての語彙にボキャブラリリストのようなものがあります。私はボキャブラリーの同じリストを持っていますが、ソートされておらず、別の言語では数字は意味に合致しています。だから、同じ言葉は両方の言語で同じ数字を持っています。どのように私は両方の語彙を一緒に一致させることができ、メインの言語と同じ順序であることができますか?例:別の配列の値の部分文字列を使用して配列をソートする方法

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

入力:

$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', 
) 
+0

私が望んでいたほとんどのものです。たぶん私は十分にそれを明確にしていませんでした。私は主語の言葉の順序が同じであることを望んでいます。だから私は主な言語に合わせて翻訳された言語の順序を変更したいだけです。私の例のように、英語の単語のリストは変更されず、ドイツ語だけが英語の単語に一致するように配置されます。 – staffblast

+0

まず、ご協力いただきありがとうございます。本当にありがとうございます。私は間違いなくあなたに緑のダニを与えるでしょう。 – staffblast

+0

私の英語は最高ではないので、私はそれを間違って説明するかもしれません。私の最初の計画は、私はすべての英語の単語の配列を持っているが、私の方法で既に並べ替えられていたということでした。番号は連続していません。したがって、配列の最初の単語は213の番号を持ち、2番目の単語の番号は12です。ドイツの配列(ソートされていない)は英語の配列と同じ順序になります。両方の配列の番号はかなりランダムです。 – staffblast

関連する問題