Каково различие между эхом, печатью и print_r в PHP?

Поместите его в Ваш профиль удара :

~/.bash_profile

190
задан mikemaccana 2 February 2015 в 01:37
поделиться

3 ответа

Просто чтобы добавить к Ответ Джона , echo должен быть единственным, который вы используете для печати содержимого на странице.

print ] немного медленнее. var_dump () и print_r () следует использовать только для отладки.

Также стоит упомянуть, что print_r () и var_dump () будет эхом по умолчанию, добавьте второй аргумент к print_r () по крайней мере, который оценивается как true, чтобы вернуть его вместо этого, например print_r ($ array, TRUE) .

Разница между эхом и возвратом:

  • echo: немедленно выводит значение на вывод.
  • return: возвращает вывод функции в виде строки. Полезно для регистрации и т.д.
16
ответ дан 23 November 2019 в 05:37
поделиться

print и echo более или менее одинаковы; они обе являются языковыми конструкциями, отображающими строки. Различия незначительны: print имеет возвращаемое значение 1, поэтому его можно использовать в выражениях, тогда как echo имеет тип возврата void ; echo может принимать несколько параметров, хотя такое использование редко; echo немного быстрее, чем print . (Лично я всегда использую echo , никогда print .)

var_dump распечатывает подробный дамп переменной, включая ее тип и тип любого под- элементы (если это массив или объект). print_r печатает переменную в более удобочитаемой форме: строки не заключены в кавычки, информация о типе опущена, размеры массивов не указаны t задано и т. д.

var_dump обычно более полезен, чем print_r при отладке, по моему опыту. Это особенно полезно, когда вы точно не знаете, какие значения / типы у вас есть в переменных. Рассмотрим эту тестовую программу:

$values = array(0, 0.0, false, '');

var_dump($values);
print_r ($values);

С помощью print_r вы не можете отличить 0 и 0,0 или false и '' :

array(4) {
  [0]=>
  int(0)
  [1]=>
  float(0)
  [2]=>
  bool(false)
  [3]=>
  string(0) ""
}

Array
(
    [0] => 0
    [1] => 0
    [2] => 
    [3] => 
)
181
ответ дан 23 November 2019 в 05:37
поделиться

echo

  • Выводит одну или несколько строк, разделенных запятыми
  • Нет возвращаемого значения

    например. echo «Строка 1», «Строка 2»

print

  • Выводит только одну строку
  • Возвращает 1 , поэтому ее можно использовать в выражении

    , например. print "Hello"

    или, if ($ expr && print "foo")

print_r ()

  • Выводит удобочитаемое представление любого одного значения
  • Принимает не только строки, но и другие типы, включая массивы и объекты, форматируя их для удобства чтения
  • Полезно при отладке
  • Может возвращать свой вывод как возвращаемое значение (вместо эха), если задан второй необязательный аргумент

var_dump ()

  • Выводит удобочитаемое представление одного или нескольких значений, разделенных запятыми
  • Принимает не только строки, но и другие типы, включая массивы и объекты, форматируя их для удобства чтения
  • ] Использует формат вывода, отличный от print_r () , например, он также печатает тип значений
  • Полезно при отладке
  • Нет возвращаемого значения

var_export ()

  • Выводит удобочитаемое и исполняемое PHP представление любого одного значения
  • Принимает не только строки, но и другие типы, включая массивы и объекты. ects, форматируя их так, чтобы их можно было читать
  • Использует другой формат вывода для print_r () и var_dump () - результирующий вывод является действительным кодом PHP!
  • Полезно при отладке
  • Может возвращать свой вывод как возвращаемое значение (вместо эха), если задан второй необязательный аргумент.

Примечания:

  • Хотя print может использоваться в выражение, я рекомендую людям избегать этого, потому что это плохо для читабельности кода (и потому что оно вряд ли когда-либо будет полезно). Правила приоритета при взаимодействии с другими операторами также могут сбивать с толку.Из-за этого у меня лично никогда не было причин использовать его поверх echo .
  • В то время как echo и print являются языковыми конструкциями, print_r () и var_dump () / var_export () - обычные функции. Вам не нужны круглые скобки, чтобы заключать аргументы в echo или print (и если вы их используете, они будут обрабатываться так же, как в выражении).
  • Хотя var_export () возвращает действительный код PHP, позволяющий считывать значения позже, использование этого кода для производственного кода может облегчить введение уязвимостей безопасности из-за необходимости использования eval ( ) . Было бы лучше использовать такой формат, как JSON, вместо того, чтобы хранить и считывать значения. Скорость будет сопоставимой.
98
ответ дан 23 November 2019 в 05:37
поделиться
Другие вопросы по тегам:

Похожие вопросы: