当前位置: 首页 > 面试题库 >

为什么PHP认为0等于字符串?

桂飞翼
2023-03-14
问题内容

我有以下代码:

$item['price'] = 0;
/* Code to get item information goes in here */
if($item['price'] == 'e') {
    $item['price'] = -1;
}

旨在将物料价格初始化为0,然后获取有关其的信息。如果价格被告知为“ e”,则表示交换而不是卖出,其作为负数存储在数据库中。

也有可能将价格保留为0,这是因为该项目是奖励商品,或者是因为价格将在以后设置。

但是,每当未设置价格时,其初始值将为0,则上述if循环将评估为true,并将价格设置为-1。也就是说,它认为0等于“ e”。

如何解释呢?

当价格提供为0(初始化后)时,该行为是不稳定的:有时if评估为true,有时评估为false。*


问题答案:

您正在做的工作==将为您整理类型。

0是一个int,因此在这种情况下它将转换'e'为一个int。这是不可解析的,并将成为0。一个字符串'0e'将成为0并将匹配!

采用 ===



 类似资料:
  • 问题内容: 为什么在Python中等于?它不应该像那样抛出异常吗? 问题答案: Wikipedia对历史进行了有趣的报道,并对以下内容的价值有不同的看法: 至少从19世纪初期开始,辩论一直在进行。当时,大多数数学家都同意,直到1821年,柯西(Cauchy)以及诸如未定义形式的表格之类的表达式才被列出。在1830年代,利比里(Libri)发表了令人信服的论点,莫比乌斯(Möbius)站在他身边。

  • 问题内容: 在Python中(我仅使用Python 3.6进行过检查,但我相信它也适用于许多以前的版本): 但: 为什么两种方法的结果不同?相等运算符对元组的处理方式是否不同? 问题答案: 前两个表达式都解析为元组: (即),然后是 ,其次是(仍然如此)。 由于逗号分隔符相对于相等运算符具有较高的优先级,因此将表达式进行拆分:Python看到一个元组包含两个表达式,其中一个恰好是一个相等测试,而不

  • 问题内容: 在JavaScript中,为什么要评估为,但要评估为? 我在一个文本输入字段进行数字运算,和我正在检查该字段为,或。当有人在该字段中输入几个空格时,我的验证在这三个字段上均失败,并且我对为什么它无法通过检查感到困惑。 问题答案: JavaScript将一个空字符串解释为0,然后失败了isNAN测试。您可以先在字符串上使用parseInt,它不会将空字符串转换为0。然后结果应为isNAN

  • 我有一个包含以下条目的Java配置文件 这是一个编入工作了6年的罐子的资源。突然之间,这种比较似乎并不等同于布尔真。 我已经检查了Windows行尾和空格。这是Bash5.0.17,它相当新。它在Solaris上运行。似乎足够简单,我们不想编辑脚本,如果可能的话。还有什么其他的解释呢?

  • 问题内容: 我在进行一些MySQL测试查询,并意识到将字符串列与(作为数字)进行比较可以得出! 但是,将其与其他任何数字(正数或负数,整数或十进制数)进行比较,将得到预期的结果(当然,除非字符串是数字以字符串的形式表示) 当然,按预期将字符串与as字符串进行比较会得出false。 但是,为什么它如此呢? 这是为什么? 问题答案: MySQL自动将字符串转换为数字: 不以数字开头的字符串的值为0:

  • 问题内容: 显然,它不是根据长度来比较它们,而是通过编码来比较它们。但是,我不知道它是如何工作的。我需要一些解释:-) 问题答案: 字符串按字典顺序进行比较。即逐个字符,直到它们不相等或没有要比较的字符为止。“11”的首字符小于“ 3”的首字符。 如果我们使用字母,则因为不小于,不小于,但是由于小于,小于。 您可以将字符串显式转换为数字: