通过索引数组重新排列数组 - PHP

时间:2015-02-02 00:22:46

标签: php arrays

我有一个$Percentages1数组,我使用arsort()按降序排序,然后我使用名为array_keys()的{​​{1}}获取了一个包含新密钥订单的数组

我的问题是我现在如何将另一个数组$keyorder重新排列为与$Percentages2相同的键顺序?

非常感谢任何帮助!非常感谢!

编辑 - 按要求编码:

$Percentages1

1 个答案:

答案 0 :(得分:0)

如果你不想创建另一个数组变量,那么这里最简单的方法就是遍历$keyorder并将$Percentages2对应键上的元素附加到一个新数组上;。

// Sorted as you already have it...
$keyorder = array_keys($Percentages1);
// Final array
$output = array();
foreach ($keyorder as $key) {
  $output[$key] = $Percentages2[$key];
}

// Don't need the source anymore
unset($Percentages2);

附加到$output的关键顺序将保留在最终结果中。

给定输入数组,这会产生

print_r($output);
Array
(
    [2] => 9.42
    [0] => 2.5
    [1] => 3.52
    [4] => 0.35
    [3] => 9.81
)

您实际上并不需要使用array_keys()。在致电arsort()之后,您可以foreach对已排序的$Percentages1进行排序,并按密钥排序为$output

// Skip array_keys, and read the sorted array directly
arsort($Percentages1);
foreach ($Percentages1 as $key => $value) {
  // Same as before inside the loop
  $output[$key] = $Percentages2[$key];
}