0

次の2つの仮想配列があります。

$values = array("fourth", "first", "second", "third");
$indices = array(3, 0, 1, 2);

$valuesに基づいて再配置する最速の方法は何$indicesですか?

おそらく何か方法はあります$values->index_array = $indicesか?

4

3 に答える 3

1

これは、質問のフレーズに基づく単なる推測です。

$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"
}
于 2013-05-31T01:24:46.370 に答える
0

私はするだろう:

<?php
$newarray = array_fill_keys($indices, $values);
?>

もちろん、これはインデックスが常に一意であることを前提としています。

于 2013-05-31T01:20:59.210 に答える
-1

質問で定義されているように、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);
于 2013-05-31T01:25:25.037 に答える