$result = mysql_query($strSql);
foreach($bestmatch_array as $restaurant)
{
while($row = mysql_fetch_array($result))
{
if($restaurant == $row[0])
{
$value = $row[1];
}
}
}
我要做的是根据$ bestmatch数组中存储的值对查询形成的数组进行排序。
我不知道我做错了什么,但第4行似乎只运行一次。请帮帮我们提前完成。
答案 0 :(得分:1)
php mysql_fetch_array()未按预期工作
您的期望不对。
foreach($bestmatch_array as $restaurant)
{
// This loop will only run for first iteration of your foreach.
while($row = mysql_fetch_array($result))
{
}
// everything has been fetched by now.
}
这是一个逻辑错误的序列。
你希望你的内循环被反复调用,就像外循环运行一样多次,但是记录获取不能像那样工作。对于外循环的首次运行,将获取$ result中的所有行,因为在while循环之后没有重置计数器,这意味着在第一次运行之后,下一次运行将不再有行。
解决方案?首先从mysql中获取行,然后使用简单的in_array
调用来检查您的数组中是否有该餐厅。
$result = mysql_query($strSql);
while($row = mysql_fetch_array($result))
{
$name=$row[0];
if(in_array($name,$bestmatch_array))
$value=$name;
}
答案 1 :(得分:0)
首先将查询结果存储在数组中:
$result = mysql_query($strSql);
$results_row = array();
while($row = mysql_fetch_array($result))
{
$results_row[] = array($row[0],$row[1]);
}
foreach($bestmatch_array as $restaurant)
{
foreach ($results_row as $key => $value)
{
if($restaurant == $results_row[$key][0])
{
$value = $results_row[$key][1];
}
}
}