0

我正在尝试在 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
}
4

3 回答 3

1

首先,我认为检查你用什么填充数组而不是检查数组本身会更容易。随着填充数组的增长,搜索它会花费越来越长的时间。安装,考虑:

$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语法,如 in SELECT fields, you, need FROM table,这样更有效。
您可能还注意到上面的代码使用 PDO,而不是mysql_*. 为什么?仅仅因为mysql_*扩展已弃用且不应再使用
阅读红色警告框在每个 mysql* 页面上告诉您的内容。它们不仅仅是为了添加一些颜色,让事物活跃起来。他们是真正的wanrings。

于 2013-07-31T13:46:42.627 回答
1

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

于 2013-07-31T13:42:38.647 回答
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;

}
于 2013-07-31T13:48:28.830 回答