while循环从数据库收集数据,直到数组包含某个值

时间:2013-07-31 13:40:37

标签: php loops while-loop

我正在尝试在PHP中创建一个while循环,它从数据库中检索数据并将其放入数组中。这个while循环应该只在数组填充包含某个值之前有效。

有没有办法扫描数组并在循环仍然忙的时候查找值?

直言不讳地说;

$array = array();
$sql = mysql_query("SELECT * FROM table");

while($row = mysql_fetch_array($sql)){

    //Do stuff

    //add it to the array

    while($array !=) //<-- I need to check the array here
}

3 个答案:

答案 0 :(得分:2)

首先,我认为使用检查你正在填充数组的内容会更容易,而不是检查数组本身。随着填充阵列的增长,搜索它将花费更长时间。 Insted,考虑:

$array = array_merge($array, $row);
if (in_array('ThisisWhatIneed', $row)
{
    break;//leaves the while-loop
}

但是,如果您正在查询返回更多数据,请考虑将其更改为返回您需要的内容,仅处理需要处理的数据,否则,您最终可能会代码类似于:

$stmt = $db->query('SELECT * FROM tbl');
while($row = $stmt->fetch(PDO::FETCH_ASSOC))
{
    if ($row['dataField'] === 'username')
    {
        $user = $row;
        break;
    }
}

WHERE在这里可以提供很多帮助,你不觉得吗?同样利用MySQL的特定SELECT语法,如SELECT fields, you, need FROM table中更有效率。
您可能还注意到上面的代码使用的是PDO,而不是mysql_*。为什么?只是因为mysql_*扩展程序 已弃用且不应再使用
每个mysql *页面上Read what the red-warning-boxes tell you。他们不只是在那里添加一些颜色,并且活跃起来。他们是真正的傻瓜。

答案 1 :(得分:1)

您可以使用in_array函数和break语句来检查值是否在数组中,然后停止循环。

答案 2 :(得分:1)

为什么不在插入数组时检查每个值?每次要检查时,它比遍历整个数组要高效得多。

$array = array();
$stopValue = ...
$sql = mysql_query("SELECT * FROM table");

while($row = mysql_fetch_assoc($sql)){


    array_push($array,$row['column']);
    if($row['column'] == $stopValue){
          // The array now contains the stop value
          break;

}