0

なぜ$valArray(1)で、数値ではないのですか? $selected as $k => $valarray から各行が返されるはずだと思っていました$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

こんにちは、あなたが何をしようとしているのかよくわかりませんが、次のコードは配列の配列を作成しています。

$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 に答える
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 に答える