正在读取排序数组


Reading sorted array

为什么$val是Array(1),而不是数值?我预计$selected as $k => $val应该返回数组$selected中的每一行。因此,$k必须是一个数字键(它是),$val必须是相应的数值(但它是一个数组,而不是简单的整数)。那么,如何正确保存数组$ind$ranks中的排序键和值呢?

<?php
        $selected = array();
        for ($i=0; $i<5; $i++) {
            $selected[] = array($i => rand(0,5));
        }
        arsort($selected);
        $ind = array();
        $rank = array();
        foreach($selected as $k => $val) {
           $ind[] = $k;
           $rank[] = $val;
        }
?>

更新:对于incstance,此代码。。

for ($i=0; $i<5; $i++) {
    $selected[$i] = rand(0,5);
}

提供阵列:[0]=>5,[1]=>3,[2]=>2,[3]=>5,[4]=>3

一旦我对它进行了排序,初始键就会被删除,对吧?数组排序后,如何找到随机生成值的初始键[0]-[4]?

我认为您可能的解决方案是更改

$selected[] = array($i => rand(0,5));

$selected[] = rand(0,5);

这样做将产生如下的$ind$rank

Array
(
    [0] => 0
    [1] => 3
    [2] => 2
    [3] => 4
    [4] => 1
)
Array
(
    [0] => 4
    [1] => 3
    [2] => 1
    [3] => 0
    [4] => 0
)

做你想做的事情的最好方法是只使用结果数组,例如:

$selected

Array
(
    [1] => 5
    [2] => 5
    [4] => 4
    [0] => 2
    [3] => 1
)

我认为这就是您需要的

for ($i=0; $i<5; $i++) {
    $selected[$i] = rand(0,5);
}

您的数组结构如下所示:

array(
    0 => array(0 => 1),
    1 => array(1 => 4),
    ...
)

因为您在此处分配数组

$selected[] = array($i => rand(0,5));

你只需要这个:

$selected[] = rand(0,5);

嗨,我不太确定您要做什么,但下面的代码正在创建一个数组。

$selected = array();
        for ($i=0; $i<5; $i++) {
            $selected[] = array($i => rand(0,5));
        }

所以$val将是一个数组。您可以尝试以下代码:

$selected = array();
    for ($i=0; $i<5; $i++) {
        $selected[] = rand(0,5);
    }

感谢