Можете ли вы выйти из: productCode? Вполне возможно, что значение не соответствует вашим ожиданиям, и удаление несуществующего элемента с радостью ничего не сообщит, если совпадение не найдено.
Если вы используете PHP5 (и так и должно быть), взгляните на классы SPL ArrayObject . Документация не слишком хорошая, но я думаю, что если вы расширите ArrayObject, у вас будет ваш «поддельный» массив.
РЕДАКТИРОВАТЬ: Вот мой быстрый пример; Боюсь, у меня нет ценного варианта использования:
class a extends ArrayObject {
public function offsetSet($i, $v) {
echo 'appending ' . $v;
parent::offsetSet($i, $v);
}
}
$a = new a;
$a[] = 1;
PHP's concept of overloading and operators (see Overloading, and Array Operators) is not like C++'s concept. I don't believe it is possible to overload operators such as +, -, [], etc.
Possible Solutions
ArrayObject
is too slow for you).Похоже, что это не особенность языка, см. Эту ошибку . Однако, похоже, что есть пакет , который позволяет вам выполнять какую-то перегрузку.
Проще говоря, нет; и я полагаю, что если вы считаете, что вам нужна перегрузка в стиле C ++, вам, возможно, придется переосмыслить решение вашей проблемы. Или, возможно, подумайте о том, чтобы не использовать PHP.
Перефразируя Джейми Завински: «У вас проблема и вы думаете:« Я знаю! Я буду использовать перегрузку операторов! » Теперь у вас две проблемы. "
Я полагаю, что если вы считаете, что вам нужна перегрузка в стиле C ++, вам, возможно, придется переосмыслить решение вашей проблемы. Или, возможно, подумайте о том, чтобы не использовать PHP.Перефразируя Джейми Завински: «У вас проблема и вы думаете:« Я знаю! Я буду использовать перегрузку операторов! » Теперь у вас две проблемы. "
Я полагаю, что если вы считаете, что вам нужна перегрузка в стиле C ++, вам, возможно, придется переосмыслить решение вашей проблемы. Или, возможно, подумайте о том, чтобы не использовать PHP.Перефразируя Джейми Завински: «У вас проблема и вы думаете:« Я знаю! Я буду использовать перегрузку операторов! » Теперь у вас две проблемы. "