Почему $M-; синтаксически действителен и что он делает?
Я не считаю себя экспертом по PHP, но я разработал несколько страниц, содержащих несколько тысяч строк кода. Для моего текущего проекта, который предназначен для игрового сайта, я обратил внимание на существующую функцию, содержащую строку
$M–;
Теперь мое базовое понимание PHP говорит мне, что это не работает, так как это должно быть - для краткости -1. Но это не тире, script работает без ошибок (error_reporting (E_ALL)
), но повторение $M
до и после дает мне то же самое значение.
Итак, что он делает и почему я не получаю ошибку?
Ответы
Ответ 1
Это en dash, который для PHP является просто случайным байтом без определенного значения. $M–
, или в кодировке UTF-8 4DE28093
, является допустимым именем переменной. Также как $漢字
.
Одна переменная сама по себе просто инициализирует эту переменную до null
, если она еще не существует, строка ничего не делает else.
Ответ 2
Этот код вашего сообщения приведет к уведомлению. Во-первых, потому что это не знак минус –
vs -
< - different (если у вас нет имени переменной M–
).
Примечание: переменная Undefined: M-in
Второй, даже если это знак минус, он выплюнул уведомление.
Ошибка анализа: синтаксическая ошибка, неожиданный ';' в
Если что-то только показывает, что вы неправильно включили полное сообщение об ошибках или что вы используете символы Unicode в именах переменных, просто вставляйте других людей, читающих ваш код (включая вас самих).;)
UPDATE
Я немного исказил ваш код. Случается, что вы выполняете инициализацию переменной M–
при выполнении этой строки, поэтому M–
будет null
.
Ответ 3
Похоже, он мог бы интерпретировать его как $M - null;
$M минус нуль по существу. Что бы ничего не делало?