0

我有以下两个假设数组:

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

$values基于重新排列的最快方法是什么$indices

也许有什么办法$values->index_array = $indices吗?

4

3 回答 3

1

这只是基于问题中的一个短语的猜测:

根据 $indices 重新排列 $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 的答案是正确的,但您最好采用另一种方法来生成结果。

如果可以,而不是生成两个数组:

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

而是只生成一个数组并在其上调用 ksort :

$valuesToSort = array();
$valuesToSort[3] = 'fourth';
$valuesToSort[0] = 'first';
$valuesToSort[1] = 'second';
$valuesToSort[2] = 'third';

ksort($valuesToSort);
于 2013-05-31T01:25:25.037 回答