Intereting Posts
APNS PHP JSON Структура полезной нагрузки Используйте переменную из __construct () в других методах Netbeans Auto-Complete не работает для пользовательского PHP-класса Отобразить способы доставки для интерфейса, как в панели администратора? Google Analytics, отображает более одного запроса PHP не может подключиться к LDAP Oracle Directory Server Enterprise Edition Как добавить запрос сортировки в laravel Статус пула PHP-FPM процесса last-request-cpu Разделить слово camelCase на слова с php preg_match (регулярное выражение) Синтаксическая ошибка при возврате оператора как разделить изображение на три равные части в php imagemagick и объединить с некоторыми дополнениями и выводами как одно изображение Функции против статических методов Как определить глобальную переменную для Twig mod_rewrite: многоуровневый URL-адрес с использованием параметра запроса Самый эффективный с точки зрения памяти способ разделить куски переменной величины?

Можно ли использовать массив в PHP?

Можно ли использовать массив без одиночной или двойной котировки, такой как $ array [key]? Я думал, что это плохо, потому что PHP сначала ищет константу, если я не использую ни одну, ни двойную цитату. Один из моих коллег сказал мне, что это не имеет значения.

Ребята, что вы думаете?

Solutions Collecting From Web of "Можно ли использовать массив в PHP?"

Это не считается ОК – даже если он будет работать в большинстве случаев.

В основном, когда PHP видит это:

echo $array[key]; 

Он будет искать константу, определенную с помощью define , называемого key и, если ее нет, будет принято значение 'key' .

Но, если в вашем коде есть что-то подобное раньше:

 define('key', 'glop'); 

Это не займет

 echo $array['key']; 

больше; вместо этого он будет использовать значение константы key – и ваш код будет таким же, как:

 echo $array['glop']; 

В конце концов, если не поставить кавычки вокруг имени ключа, это плохо по крайней мере по двум причинам:

  • Существует риск, что он не будет делать то, что вы ожидаете – что очень плохо
    • Возможно, сегодня …
    • Но как насчет следующей недели / месяца / года?
    • Может быть, однажды вы define константу с неправильным именем 😉
  • Это не хорошо для производительности:
    • он должен искать константу, прежде чем использовать 'key'
    • И, как сказано в комментарии, он генерирует уведомления (даже если вы отключите error_reporting и display_errors , уведомления / предупреждения / ошибки все еще сгенерированы, даже если отброшены позже)

Итак: вы не должны слушать этого парня по этому поводу: он ошибается: это имеет значение .

И если вам нужно какое-то «доказательство», которое «лучше», чем то, что люди могут сказать вам о stackoverflow, вы можете указать его в этот раздел руководства, в качестве ссылки: почему ошибка в $ foo [bar] неверна?

Это нехорошо и добавить к тому, что говорили другие, это вызовет ошибку в большинстве случаев:

 8 Notice Use of undefined constant key - assumed 'key' in file: 'index.php' on line 46 

См. Раздел в Руководстве по PHP для «Почему ошибка в $ foo [bar]?» в разделе «Array do's and don'ts» на этой странице: http://php.net/manual/en/language.types.array.php

Из руководства PHP – Почему $ foo [bar] не так?

Всегда используйте кавычки вокруг индекса строкового литерала. Например, $ foo ['bar'] верен, а $ foo [bar] – нет. Но почему? В старых сценариях встречается такой синтаксис:

 <?php $foo[bar] = 'enemy'; echo $foo[bar]; // etc ?> 

Это неправильно, но это работает. Причина в том, что этот код имеет неопределенную константу (bar), а не строку («bar» – заметьте кавычки). PHP может в будущем определять константы, которые, к сожалению, для такого кода имеют одно и то же имя. Это работает, потому что PHP автоматически преобразует голую строку (некорректную строку, которая не соответствует известному символу) в строку, содержащую голую строку. Например, если нет определенной константы с именем bar, тогда PHP будет заменять строку «bar» и использовать ее.

В руководстве вы найдете еще несколько примеров, которые вы можете проверить.

Это неверно и будет автоматически определять константу:

 $var = $array[bar]; 

Однако это использование верно:

 $var = "string $array[bar] ..."; 

Для совместимости с PHP2 этот старый синтаксис по-прежнему разрешен в контексте строки. Цитирование ключа приведет к ошибке синтаксического анализа, если вы также не используете {фигурные скобки} вокруг него.

Если ключ фактически не является константой, нет причин для того, чтобы вы не клали кавычки вокруг ключа.

Как работает PHP, он ищет постоянное значение того, что вы положили, но он принимает строковое представление, если константу не удается найти.

Если кто-то должен был отредактировать ваш код по дороге и добавить константу с этим ключевым именем, это просто вызовет больше головных болей.

Плохая практика не цитировать ключевые значения по ряду причин:

  1. Потенциальные столкновения со значимыми именами символов, такие как define констант d.
  2. Некоторые клавиши не могут быть выражены без цитирования (например, ключ "]" ).
  3. Плохие привычки могут укусить вас позже (а именно в отношении №1 и №2).
  4. Производительность – поиск define требует времени.

Если вы хотите избежать ввода котировок вокруг имен, которые являются только стандартными элементами того, что вы проходите много, возможно, вам захочется использовать объекты вместо этого, которые вместо синтаксиса $array["element"] синтаксис $array["element"] .