###前提・実現したいこと
quizに回答するシステムを作っています。
配列の特定の要素だけをシャッフルしたいのですが、そのいい方法についてアドバイス頂けませんでしょうか。
例えば、choice1とchoice2をシャッフルする
###該当のソースコード
PHP
1<?php 2define('PDO_DSN','mysql:dbname=test;host=127.0.0.1'); 3define('DB_USERNAME','root'); 4define('DB_PASSWORD','*****'); 5 6try { 7 $dbc = new PDO( 8 PDO_DSN, 9 DB_USERNAME, 10 DB_PASSWORD, 11 array(PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION)); 12$query = "SELECT * FROM quiz"; 13$result = $dbc->query($query); 14$data = $result->fetchAll(); 15 16}catch(PDOException $e){ 17 var_dump($e); // 18}
MySQL
1mysql> select * from quiz; 2+----+--------+---------+---------+ 3| id | answer | choice1 | choice2 | 4+----+--------+---------+---------+ 5| 1 | apple | りんご | みかん | 6| 2 | horse | 馬 | 犬 | 7+----+--------+---------+---------+ 82 rows in set (0.00 sec)
###試したこと
shuffle関数は連想配列をシャッフルできないみたいなので、
以下のコードを追記しましたが、上手く行っていません。
arykey = array_keys($choices); shuffle($arykey); $newAry = array(); foreach ($arykey as $key) { $newAry[$key] = $choices[$key]; } var_dump($newAry);