字符串'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