Итак, я получил уведомление в своем php при создании канала продукта Google. Уведомление звучало так: «Следующее уведомление php появилось сегодня 4989 раз на сайте _: Уведомление PHP: Неопределенный индекс: 0 в /xxx/Status.php в строке 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 оценивается как true? Он также оценивается как true с другими подобными структурными кодами, такими как «h94».
Любая помощь будет оценена по достоинству, поскольку никто в отделе не может понять, почему это происходит.
Я предполагаю, что я не помещал достаточно информации в q. Происходят две вещи. 1. 'w32' почему-то преобразовано в число = 0. 2. [0] вставляется как мой ключ в массив, когда код продукта имеет структуру 'x##';