次の2つの仮想配列があります。
$values = array("fourth", "first", "second", "third");
$indices = array(3, 0, 1, 2);
$values
に基づいて再配置する最速の方法は何$indices
ですか?
おそらく何か方法はあります$values->index_array = $indices
か?
これは、質問のフレーズに基づく単なる推測です。
$index に基づいて $values を再配置する方法
$values = array("fourth", "first", "second", "third"); $indices = array(3, 0, 1, 2);
array_multisort($indices, $values);
var_dump($values);
オンラインデモ: http://ideone.com/UKfNiq
出力は次のとおりです。
array(4) {
[0]=>
string(5) "first"
[1]=>
string(6) "second"
[2]=>
string(5) "third"
[3]=>
string(6) "fourth"
}
私はするだろう:
<?php
$newarray = array_fill_keys($indices, $values);
?>
もちろん、これはインデックスが常に一意であることを前提としています。
質問で定義されているように、ZerkMS の回答は正しいですが、結果を生成するには別のアプローチを採用する方がよい場合があります。
可能であれば、次の 2 つの配列を生成するのではなく、
$values = array("fourth", "first", "second", "third");
$indices = array(3, 0, 1, 2);
代わりに、1 つの配列を生成し、それに対して ksort を呼び出します。
$valuesToSort = array();
$valuesToSort[3] = 'fourth';
$valuesToSort[0] = 'first';
$valuesToSort[1] = 'second';
$valuesToSort[2] = 'third';
ksort($valuesToSort);