0

为什么$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;
        }
?>

更新:例如,此代码..

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

提供数组:[0] => 5, [1] => 3, [2] => 2, [3] => 5, [4] => 3

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

4

4 回答 4

2

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

$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
)
于 2012-09-10T08:07:24.657 回答
0

我认为这就是你需要的

for ($i=0; $i<5; $i++) {
    $selected[$i] = rand(0,5);
}
于 2012-09-10T08:08:16.210 回答
0

您的数组结构将如下所示:

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

因为您在这里分配了一个数组

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

你只想要这个:

$selected[] = rand(0,5);
于 2012-09-10T08:08:24.487 回答
0

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

$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);
    }

谢谢

于 2012-09-10T08:11:38.313 回答