【问题标题】:if else statement crash [closed]if else语句崩溃[关闭]
【发布时间】:2014-08-12 14:54:48
【问题描述】:

我正忙于一个网站,但遇到了问题。

问题是每次while循环循环时都会运行if语句,

$query ="SELECT * FROM spelen";
$res = mysqli_query($con,$query);
$count = 1;
while($row = mysqli_fetch_array($res)){
   echo '<div class="block">
      <section>'.$row['Naam'].'</section>
      '.$row['plaatje'].'
      <section class="prize">' .$row['Prijs']. '</section>
      <section class="prize">' .$row['korteText']. '</section>
   </div>';

if($count = 3){
   echo '<div class="whitespace"></div>';
   $count = 1;
}
$count++;}`

如果我做错了什么,希望有人能告诉我?

【问题讨论】:

  • if($count == 3){....= 是赋值,== 是比较

标签: php mysql if-statement while-loop


【解决方案1】:

=assignment operator(将 3 放入 $count 变量中)。

==comparison operator(比较 $count 和 3)。

您只是在执行错误的操作...没有“崩溃”,此代码有效并且完全按预期工作。赋值操作总是成功,并返回赋值,0视为false,其他数值为true。来自 PHP 手册:

var_dump((bool) "");        // bool(false)
var_dump((bool) 1);         // bool(true)
var_dump((bool) -2);        // bool(true)
var_dump((bool) "foo");     // bool(true)
var_dump((bool) 2.3e5);     // bool(true)
var_dump((bool) array(12)); // bool(true)
var_dump((bool) array());   // bool(false)
var_dump((bool) "false");   // bool(true)

可以补充:

var_dump((bool) 0);         // bool(false)

如果你想避免这些错误的小提示:把文字放在第一位。不要写$count == 3,而是写3 == $count。在这种情况下,如果你尝试分配3 = $count,PHP 会抛出错误。

【讨论】:

  • 赋值操作的结果就是赋值的值。即,$foo = 0始终false
  • 哦,我对 PHP 不了解!已编辑。
  • “除了在极少数情况下内存不足” - 错误。赋值操作永远不会失败,它总是成功的。分配要分配的值可能会失败,但是一旦在内存中分配了值(这发生在分配本身之前),分配操作基本上不会失败。
  • 已编辑,因为它只是我回答的补充。您无法分配$count = 3,因为内存中至少没有sizeof(char) 字节可用。然而,这非常不太可能发生。
  • 如果您没有足够的内存,您将无法在内存中“创建”值 3。这与分配它是分开的。例如,foo(3) 可能由于内存耗尽的相同原因而失败,即使没有涉及分配。 (让我们忽略源代码中的文字无论如何都不会真正表现出这个问题,而是为了论证而使用它。)
猜你喜欢
  • 2017-09-05
  • 2018-05-06
  • 2016-10-15
  • 2018-03-29
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-03-29
相关资源
最近更新 更多