не обращал никогда на это внимания...Попытка доступа к переменным других типов (исключая массивы или объекты, реализующие определенные интерфейсы) с помощью [] или {} молча вернет NULL.
Источник: Что изменилось в PHP 5.4.x ?Нецифровые смещения строк, например $a['foo'], где $a - это строка, теперь возвращают false в функции isset() ... и вызывают предупреждение E_WARNING при подобном использовании.
в каких таких?А вообще лучше использовать array_key_exists в таких случаях.
расскажите для конкретного случая как оно работаетПоведение достаточно очевидное, если знать как работает приведение типов.
В случае когда нужно проверить есть ли индекс в массиве.в каких таких?
расскажите для конкретного случая как оно работает
А я инстинктивно от таких конструкций ухожу =)А я так, часто проверяю на существование элемент массива, придется много чего переделывать, во я тупил ...
Только 'element' превращается в 0, и получается что isset проверяет наличие нулевого символа, т.е. "хитрая" проверка не пустая ли строкав данном случае element превращается в единицу
$value = 'любой текст';
echo '<table border=1 cellspacing=0 cellpadding=5><tr><td align="center">ключ:</td><td align="center">значение:</td></tr>';
for ($i = 0; $i < strlen($value); $i++)
{
echo '<tr><td>'.$i.'</td><td>'.$value{$i}.'</td></tr>';
}
echo '</table>';
Ну, видимо, речь идёт о той ситуации, когда ожидается и проверяется массив, а там каким-то образом оказывается строка... Но это уже косяк не php, а разработчика.Если мы работаем со строкой и у неё есть длина, зачем же проверять, есть ли в ней символы? Ясный пень они там есть! А как же?
error_reporting?ЗЫ. вообще isset недолюбливаю, а проверки делаю if ($var) и if(empty($array))
ну соответсвенно - для ключа массива if ($array[$key])