作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
是否可以重新启动 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;
}
}
}
}
当代码运行并生成牛奶
和鸡蛋
但在数据库中奶酪
出现在鸡蛋
时,我的问题发生了code>,所以它似乎永远不会被发现。如何重新启动 while 循环以强制代码从 sql 查询开始检查每个值?
已解决:使用哈希来查询而不是循环 SQL。
最佳答案
我认为最好的选择是将查询结果存储在哈希中以进行 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'];
}
}
}
关于php - 重新启动 While 循环,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18877731/
我是一名优秀的程序员,十分优秀!