PHP 中的意外无限 while 循环

Accidental infinite while loop in PHP

您好,我创建了一个 while 循环,但不明白为什么它会永远循环。有人可以解释一下为什么吗?

while ($i<3){
  if ($i=1){
    $x='psu';
  }else if ($i=2){
    $x='cases';
  }
  $sqlcpu = "SELECT * FROM $x WHERE name LIKE '%{$term}%'";
$query = mysqli_query($db, $sqlcpu);

while ($row = mysqli_fetch_array($query)){
?><br /> Name: <a  href="productpage<?php $x ?>.php?idcpu=<?php echo $row['id$x'] ?>"><?php echo $row['name'];?></a>
<?php
echo ' Price: &pound;'.$row['price'];
}
  $i++;
}

此代码还有其他问题,但它们现在不是我主要关心的问题,因为这个循环看起来应该很简单。变量 $x 和 $i 在 $i=1

之后永远不会改变

if ($i=1) 你在这里将 1 赋值给 $i,而不是比较 1 和 $i,使用

if ($i==1)

相反。

可以 也可以使用

而不是 for/if-elseif 结构
foreach( array('psu', 'cases') as $table ) {
    $sqlcpu = "SELECT * FROM $table WHERE name LIKE '%{$term}%'";