そのため、Google の製品フィードを作成しているときに、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 を取得していましたが、productcode は実際には 'w32' であったため、キーは存在しませんでした。
関数が呼び出されていたスタックの上に、面倒な製品を壊すためにこれを入れました。
if ($productcode == 0) {
$test = 'breakhere';
}
netbeans と firebug を使用すると、$productcode = 'w32' のときに行が壊れました
私の質問は、なぜ 'w32' == 0 が true と評価されるのですか? また、「h94」などの他の同様の構造コードでも true と評価されます。
部門の誰もこれが起こっている理由を理解できないので、助けていただければ幸いです。
qに十分な情報を入れていなかったと思います。2つのことが起こっています。1. 'w32' が何らかの理由で数値 = 0 に変換されました。2. プロダクトコードの構造が「x##」の場合、[0] が配列のキーとして挿入されます。