字符串'w32'== 0在php中评估为true。 是吧?

所以我在创建Google产品Feed时在我的php中发布了一条通知。 该通知是“今天_网站上发生了4989次以下php通知:PHP通知:未定义索引:0/583行/xxx/Status.php中的0”

这是该班的代码

public function inStockLocally($productcode)
{
    if($this->_status[$productcode]['status'] == self::IN_STOCK) {
        return $this->_status[$productcode]['in_stock_local'];
    }
    return false;
}

该函数获得$ productcode = 0,但产品代码实际上是'w32',所以密钥不存在。

在函数被调用的堆栈上放置该函数,以便打破繁琐的产品。

    if ($productcode == 0) {
        $test = 'breakhere';
    }

使用netbeans和萤火虫,当$ productcode ='w32'

所以我的问题是为什么'W32'== 0评估为真? 它也正在评估与其他类似结构代码如'h94'一样的真实性。

任何帮助,将不胜感激,因为部门中没有人可以找出原因。

我想我没有在q中提供足够的信息。 两件事情正在进行。 1.'w32'由于某种原因转换为数字= 0。 2.当productcode的结构为'x ##'时,[0]被插入到数组中;


我在这里有一点新意,所以请原谅,如果这不是您期望的答案,但PHP会进行大量的自动类型转换。 因此,任何不以数字字符(0..9,+, - 等)开头的字符串都会计为零。


“如果您将数字与字符串进行比较或者比较涉及数字字符串,则将每个字符串转换为数字,并以数字形式进行比较。”

http://php.net/manual/en/language.operators.comparison.php

此外,我想你有一个索引数组,尽管你期望它是一个关联数组:

array()函数用于创建一个数组。

在PHP中,有三种类型的数组:

索引数组 - 带数字索引的数组关联数组 - 带有命名键的数组多维数组 - 包含一个或多个数组的数组语法索引数组的语法:

阵列(值1,值2,值3,等);

关联数组的语法:

阵列(密钥=>值,密钥=>值,密钥=>值,等);

链接地址: http://www.djcxy.com/p/58517.html

上一篇: string 'w32' == 0 evaluates to true in php. huh?

下一篇: statement evaluate to true?