gpt4 book ai didi

php - 为什么=!似乎是 php 中的合法条件?

转载 作者:可可西里 更新时间:2023-11-01 00:39:19 26 4
gpt4 key购买 nike

我刚刚在 Php 中编码时遇到了一种错误:我正在写这样的条件:

if($showPrice != 0){
$worksheet->mergeCells('A'.$rowCount.':F'.$rowCount);
$worksheet->SetCellValue('A'.$rowCount, 'Total Weight');
$worksheet->SetCellValue('G'.$rowCount, $totalWeight);
}else{
$worksheet->mergeCells('A'.$rowCount.':D'.$rowCount);
$worksheet->SetCellValue('A'.$rowCount, 'Total Weight');
$worksheet->SetCellValue('E'.$rowCount, $totalWeight);
}

我注意到,我没有按应有的方式编写 !=,而是错误地编写了 =! 而没有出现任何错误。

这可能是什么原因?

最佳答案

您没有在 PHP 中发现任何错误。您在您的程序和您对 PHP 的了解中发现了一个错误。

$x =! 0 实际上是 $x = !0

!logical NOT operator .
0evaluated as FALSE在 bool 上下文中,因此 !0TRUE

$x = ... 是一个常规的 assignment .与任何作业一样,它会做两件事:

  • 将右侧表达式的值存储到左侧变量中;这里的表达式是 !0,如上所述,它被评估为 TRUE;
  • 整个表达式 ($x = !0) 的值是 $x 赋值后的值 (TRUE 描述).

当赋值它被用作语句时,它的值被丢弃。当它用作条件时(在 forwhileifswitch 语句中),它的值用于控制代码的执行。

在这里,if($showPrice =! 0) 总是采用 if 分支(而不是 else 分支),因为值如上所述,$showPrice = !0 表达式始终为 TRUE
此外,$showPrice 的值在执行此语句后也变为 TRUE

一行代码中的两个错误。

从 PHP 的角度来看,代码是完全有效的,即使它不寻常,也可能代表了程序员的意图。口译员没有任何理由提示它。但是,它可以被静态代码分析工具和一些 PHP IDE 检测并标记为可能的错误。

关于php - 为什么=!似乎是 php 中的合法条件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50507208/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com