我正在尝试在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
}
答案 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;
}