1

重複の可能性:
PHPを使用して配列要素をランダムに出力する

このコードがあるとしましょう:

<? if (isset($specialoffers)) { ?>
    <? foreach ($specialoffers as $value) { ?>

      <div>product #</div>

    <?};?>
<?};?>

たとえば、このリストは毎回異なる場合があり、1つの製品があり、58の製品がある場合があります。リストにランダムな順序で10個の製品のみを表示したい。

どうやってするか?

SQLクエリには触れたくない!

4

5 に答える 5

2

配列から 1 つ以上のランダムな要素を取得するarray_rand関数を見てください。

したがって、次の行に沿って何かを行うことができます。

foreach (array_rand($specialoffers,10) as $key) 
do_something_interesting_with $specialoffers[$key];
于 2013-01-16T14:10:19.420 に答える
1
$specialoffers = array_splice( shuffle($specialoffers), 0, 9 ); 

このようなものがうまくいくかもしれません。

于 2013-01-16T14:11:48.760 に答える
0

連想配列からランダムな値を取得する例を試してください。

    function array_random_assoc( $arr, $num = 1) {
        $keys = array_keys($arr);
        shuffle($keys);

        $r = array();
        for ($i = 0; $i < $num; $i++) {
            $r[$keys[$i]] = $arr[$keys[$i]];
        }
        return $r;
    }

   $specialoffers = (array_random_assoc($data_array, 10));
于 2013-01-16T14:19:23.083 に答える
0

shuffle()配列をランダム化するために使用できます。

http://php.net/manual/en/function.shuffle.php

于 2013-01-16T14:11:07.997 に答える
0

要素の数がメモリを使い果たす (そしてイテレータを介して提示される) 場合でも、必要とされるReservoir Samplingを使用してそれを行うことができます。

$randoms = new RandomIterator($specialoffers, 10);
foreach ($randoms as $value) {
   ...
}

クラスのソースコードはRandomIteratorGist として見つけることができます。

于 2013-01-16T14:37:33.450 に答える