なぜ私のPHPコードが機能しないのですか?
質問
以下はコードです:
function swap(&$a, &$b)
{
list($a, $b) = array($b, $a);
}
for ($i=0; count($resultset);$i++)
{
for($j=1;$j<5;$j++)
{
$k = rand(1, 4);
swap($resultset[$i]["option".$j],$resultset[$i]["option".$k]);
}
}
これは、MySQLクエリからの2次元配列です。キーがオプション1、オプション2、オプション3、オプション4である値をシャッフルしたいと思います。しかし、私のコードは機能しません。自分でエラーを見つけることができます。提案してください。前もって感謝します!
解決
ちょうど見た:
for ($i=0; count($resultset);$i++)
そうすべきではありません
for ($i=0; $i < count($resultset);$i++)
forループの比較を逃しました。
他のヒント
それは非常に非効率的で、バグが発生しやすく、読みやすい方法です。あなたはこれを試してみたいかもしれません:
$optionKeys = array('option1', 'option2', 'option3', 'option4');
foreach ($resultSet as &$row) {
# Get options
$options = array_intersect_key($row, array_flip($optionKeys));
# randomize
shuffle($options);
# re-assemble key=>value array
$options = array_combine($optionKeys, $options);
# assign back to $row
$row = $options + $row;
}
所属していません StackOverflow