如果缺少值,如何减少数组键的值

时间:2015-11-05 17:09:14

标签: php

请原谅我的头衔,因为我不知道如何解释。

基本上,我的阵列最多可以有40个键(所有这些键都是1-40的唯一值)。

所有钥匙都需要保持其位置。但是这些值需要从“1”重新编号为“数组中键的总数”,但保留其相对位置。)

这个数组:

$a = array(1,5,16,7,4) 

将转换为新的数组:

$b = array(1,3,5,4,2)

*相对 - 如你所见,16变为5,但仍然是数组中最高的数字,7变为4,依此类推。

这一直让我疯狂。我使用了while循环和各种各样的东西,而我却无法让它工作。

1 个答案:

答案 0 :(得分:0)

$a = array(1,5,16,7,4);
$b = $a;
sort($a, SORT_NUMERIC);
foreach($b as $kb => $vb){
    foreach($a as $ka => $va){
        if($vb === $va)
            $c[] = $ka+1;
    }
}
//$c will contain the result you are asking
print_r($c);