質問

以下はコードです:

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;
}
ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top