保持数组的顺序,但改变值


Keep order in array, but change the values

假设我有一个像[3,2,8,4]这样的数组(只是一个例子,它可以有更多或更少的值)
我想要的数字是在相同的顺序,而是使用数字1-4(如果有4个值在这个例子),即。(2, 1, 4, 3)。

我怎样才能做到这一点?

$data =  [3,2,8,4];
$keys = array_keys($data);
array_multisort($data, SORT_ASC, $keys);
array_walk($keys, function(&$value) { ++$value; });
var_dump($keys);

,你可以用ArrayReplace

<?php
$base = array(3 2, 8, 4);
$replacements = array(0 => 2, 1 => 1, 2 => 4, 3 => 3);
$store = array_replace($base, $replacements);

?>