Почему мой 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, я хочу перетасовать значения, ключами которых являются option1, option2, option3 и option4. Но мой код не работает. Ошибку могу найти сам. Пожалуйста, предложите. Заранее спасибо!


person Steven    schedule 22.11.2009    source источник
comment
что случилось? вывод неправильный? или ошибка PHP?   -  person mauris    schedule 22.11.2009


Ответы (2)


Только что увидел:

for ($i=0; count($resultset);$i++)

не должно быть

for ($i=0; $i < count($resultset);$i++)

Вы пропустили сравнение в цикле for.

person mauris    schedule 22.11.2009

Это очень неэффективный, подверженный ошибкам и нечитаемый способ сделать это. Возможно, вы захотите попробовать это:

$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;
}
person soulmerge    schedule 22.11.2009