0

ソートされた連想配列の最初の 10 個の要素のキー、値、およびインデックスが必要です。

$top10pts = array_slice($toppoints, 0, 10);
foreach ($top10pts as $key => $val) {
    echo "<tr><td>".(array_search($key, array_keys($top10pts))+1)."</td><td>".htmlentities($key)."</td><td>".$val."</td></tr>";
}

また

for ($i=0; $i<10; $i++) {
    $val = array_slice($toppoints, $i, 1);
    echo "<tr><td>".($i+1)."</td><td>".htmlentities(key($val))."</td><td>".$val[key($val)]."</td></tr>";
}

または別の方法?

PHP は初めてなので、どちらの方法もばかげていて不必要に思えます。

4

3 に答える 3

3

これが私の頭に浮かんだ最良の方法です。

$top10pts = array_slice($toppoints, 0, 10);
$i = 1;
foreach ($top10pts as $key => $val)
    echo "<tr><td>".($i++)."</td><td>".htmlentities($key)."</td><td>".$val."</td></tr>";

項目が 10 を超える場合、この方法はループ内に条件がないため、より適切に機能することに注意してください。phpなどのインタープリターでは、通常、自分で行うよりも内部関数を使用する方が適切です。

于 2013-09-04T20:56:37.700 に答える
3

アーニーの答えに似ていますが、配列スライスはまったく必要ありません

$index = 0;
foreach ($top10pts as $key => $val) {
    echo "<tr><td>".$index++."</td><td>".htmlentities($key)."</td><td>".$val."</td></tr>";
    if($index >=10) break;
}
于 2013-09-04T20:56:44.263 に答える
2

あなたはすでにソートしているので、 foreach は順番に繰り返されるので、最初の変更を使用して : を取り除きますarray_search。. .

$index = 0;
$top10pts = array_slice($toppoints, 0, 10);
foreach ($top10pts as $key => $val) {
    echo "<tr><td>".$index."</td><td>".htmlentities($key)."</td><td>".$val."</td></tr>";
    $index++;
}
于 2013-09-04T20:55:03.913 に答える