1

因此,在创建谷歌产品提要时,我在我的 php 中收到了通知。通知是“以下php通知今天在_站点上发生了4989次:PHP通知:未定义索引:0 in /xxx/Status.php on line 583”

这是该类中的代码

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 和 firebug,它在 $productcode = 'w32' 时断线

所以我的问题是为什么 'w32' == 0 评估为真?它还与其他类似的结构代码(如“h94”)一起评估为真。

任何帮助将不胜感激,因为部门中没有人能弄清楚为什么会发生这种情况。

我想我没有在q中输入足够的信息。发生了两件事。1. 'w32' 由于某种原因转换为数字 = 0。2. 当产品代码具有结构“x##”时,[0] 作为我的键插入到数组中;

4

2 回答 2

0

我在这里有点新,所以如果这不是您期望的答案,请原谅,但是 PHP 做了很多自动类型转换。因此,任何不以数字字符(0..9、+、-等)开头的字符串都将计算为零。

于 2013-09-27T21:57:36.957 回答
-1

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

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

此外,我假设您有一个索引数组,尽管您希望它是一个关联数组:

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

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

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

数组(值 1、值 2、值 3 等);

关联数组的语法:

数组(键=>值,键=>值,键=>值等);

于 2013-09-27T22:18:27.000 回答