数组PHP中的未定义偏移量(在迭代内部)

时间:2012-04-14 16:23:08

标签: php mysql

我正在尝试获取一组随机行而不重复任何BBDD,最后,代码告诉我问题......但是有一些错误......有人可以帮助我吗? P.D.错误在粗体线中。 (未定义的偏移量(在每次迭代中)) 提前致谢

mysql_query('SET CHARACTER SET utf8');
$sql=mysql_query("SELECT * FROM Questions");
$num_rows = mysql_num_rows($sql);
$max_value = (int )$num_rows;
$ids[] = array(5);
for ($i = 0; $i < 5; $i++) {
    $repetido = true;

    while($repetido == true){
    $repetido = false;
    $quest_id = rand ( 1, $max_value);//Obtiene el aleatorio

    for ($j = 0; $j < count($ids); $j++) {
        **if ($quest_id == $ids[$i])  $repetido = true;**

    }

    }
    $ids[$i] = $quest_id;
    $sql=mysql_query("SELECT * FROM Questions WHERE id_quest = $quest_id");
    $row = mysql_fetch_array($sql);

    $output[$i]=$row;
}



    echo(json_encode($output));
mysql_close();

3 个答案:

答案 0 :(得分:1)

$sql = mysql_query("SELECT DISTINCT * FROM Questions ORDER BY RAND() LIMIT 5");
$output = array();
for ($i = 0; $i < 5; $i++) {
    $output[] = mysql_fetch_array($sql);
}

echo(json_encode($output));
mysql_close();

答案 1 :(得分:1)

首先:

$ids[] = array(5);

不执行您认为的操作,它只是创建一个数组,其中一个元素的索引 0 且值 5

如果您只需要五个随机行,您可以使用MySql轻松完成:

SELECT * FROM Questions ORDER BY RAND() LIMIT 5;

答案 2 :(得分:0)

后:

$ids[] = array(5);

添加:

var_dump( $ids ); exit;

使用@joeframbach解决方案