是否可以重启while循环?我目前在foreach循环中有一个while循环,我需要while语句每次从头开始。
$sql = mysqli_query($link, "SELECT * FROM products");
$products = array('Milk', 'Cheese', 'Eggs');
$i = 0;
$total = count($products); //This is in case I change the product list.
if($sql)
{
foreach($products as $v)
{
while($r = mysqli_fetch_assoc($sql))
{
if($r['Name'] == $v)
{
echo $r['Name'] . " - £" . $r['Price'];
break;
}
}
}
}
我的问题出现在代码运行时产生Milk
和Eggs
但数据库Cheese
出现在Eggs
之前,所以它似乎永远不会被发现。如何重新启动while循环以强制代码检查sql查询开头的每个值?
求助:使用散列来查询而不是循环sql。
答案 0 :(得分:2)
我认为最好的办法是将查询结果存储在O(1)查找的散列中,而不是一遍又一遍地从sql中读取。
$sql = mysqli_query($link, "SELECT * FROM products");
$sql_products = array();
$products = array('Milk', 'Cheese', 'Eggs');
$i = 0;
$total = count($products); //This is in case I change the product list.
if($sql)
{
while($r = mysqli_fetch_assoc($sql))
{
$sql_products[$r['Name']] = $r;
}
foreach($products as $v)
{
if(array_key_exists($v,$sql_products))
{
echo $v . " - £" . $sql_products[$v]['Price'];
}
}
}