因此,我在创建Google商品Feed时在我的php中收到通知。 通知是 “今天在 _ 网站上发布了以下php通知4989次: PHP注意:未定义的索引:在第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和firebug,当$ productcode ='w32'
时,它就破坏了所以我的问题是为什么'w32'== 0评估为真? 对于像'h94'这样的其他类似结构代码,它也正在评估为真。
任何帮助都会受到赞赏,因为部门中没有人能够弄清楚为什么会发生这种情况。
我想我没有在q中输入足够的信息。发生了两件事。 1.'w32'由于某种原因转换为数字= 0。 2.当productcode具有结构'x ##'时,[0]作为我的键插入数组中;
答案 0 :(得分:0)
我在这里有点新鲜,所以请原谅,如果这不是你期望的答案,但PHP会做很多自动类型转换。因此,任何不以数字字符(0..9,+, - 等)开头的字符串都将计算为零。
答案 1 :(得分:-1)
“如果您将数字与字符串进行比较或比较涉及数字字符串,则每个字符串都会转换为数字,并且数字会进行比较。”
http://php.net/manual/en/language.operators.comparison.php
此外,我想你有一个索引数组,虽然你希望它是一个关联数组:
array()函数用于创建数组。
在PHP中,有三种类型的数组:
索引数组 - 具有数字索引的数组 关联数组 - 具有命名键的数组 多维数组 - 包含一个或多个数组的数组 句法 索引数组的语法:
阵列(值1,值2,值3,等);
关联数组的语法:
阵列(键=>值,键=>值,键=>值等);