

shuffle()関数の使い方について

ある解説を見ているとshuffle()関数について

[![画像の説明をここに入力](https://i.stack.imgur.com/uMhHE.png)](https://i.stack.imgur.com/uMhHE.png)

shuffle([1, 3, 5, 8])とすると配列の中身がシャッフルされ  
[8, 5, 1, 3]、あるいは[5, 1, 8, 3]のように返ってくるとの説明があります。

xamppでブラウザ表示させるために echo や print_r()などを使ってみたのですが、

"Fatal error: Only variables can be passed by reference inC:\xampp\htdocs…"

としか返ってきません。「変数に代入させてくれ」というような意味だと解釈し  
以下のようなに記述すると

[code]

    $ar = array(1, 3, 5, 8);
    shuffle($ar);
    print_r($ar);
    
[/code]

* * *

このようにかえってきます。

[code]

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

shuffle()関数について入門書の類では索引を見てもほぼ出てきません。  
ウェブを眺めてみると公式サイトにあるような使用例か複雑なものばかり出てきます。

shuffle — 配列をシャッフルする(PHP公式)  
<https://www.php.net/manual/ja/function.shuffle.php>  
使用例

[code]

    <?php
    $numbers = range(1, 20);
    shuffle($numbers);
    foreach ($numbers as $number) {
        echo "$number ";
    }
    ?>
    
[/code]

これだと確かに 1から20の値がランダムに生成されます。

[code]

    5 13 17 18 11 15 20 14 4 12 6 8 2 1 10 19 7 9 3 16
    
[/code]

が、上の添付画像にある

shuffle([1, 3, 5, 8]) が[8, 5, 1, 3]という風にシャッフルされるという説明とは少し違うと思います。  
[![画像の説明をここに入力](https://i.stack.imgur.com/36ov9.png)](https://i.stack.imgur.com/36ov9.png)

どのようにすれば、このように配列がシャッフルされて出てくるようになるのでしょうか？

ご存じの方いらっしゃいましたら教えてください。よろしくお願いいたします。


CC BY-SA 4.0
2021-05-31T07:47:07.763
76225
2021-05-31T07:54:13.313
2021-05-31T07:54:13.313
2238
42150
question
php
shuffle()関数の配列の使い方について