В чем разница между echo, print и print_r в PHP?

Я использую echo и print_r много, и почти никогда не использую print .

Я чувствую, что echo – это макрос, а print_r – псевдоним var_dump .

Но это не стандартный способ объяснить различия.

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

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

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] => ) 

эхо

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

    например, echo "String 1", "String 2"

Распечатать

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

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

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

print_r ()

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

var_dump ()

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

var_export ()

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

Заметки:

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

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

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

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

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

  • echo: немедленно выведет значение на выход.
  • return: Возвращает вывод функции в виде строки. Полезно для ведения журнала и т. Д.
 echo 

Не имея типа возврата

 print 

Обратный тип

 print_r() 

Выходы в формате отформатированы,

Эхо :

Это оператор не функция Нет возвращаемого значения

Не требуется круглые скобки

Не печатать массив

Распечатать

Это действительная функция

Тип возврата 1

Требуется скобки

Не печатать массив

print_r

Печать в формате для чтения

Строка не в цитатах

Не детализированная информация о переменной типа типа и всего

var_dump

Вся информация о дампе переменной типа типа и подэлемента

echo: echo – это языковая конструкция, в которой нет необходимости использовать в ней круглые скобки и может принимать любое количество параметров и возвращать пустоту.

  void echo (param1,param2,param3.....); Example: echo "test1","test2,test3"; 

print: это языковая конструкция, в которой нет необходимости использовать круглые скобки, она просто принимает один параметр и возвращает

  1 always. int print(param1); print "test1"; print "test1","test2"; // It will give syntax error 

prinf: Это функция, которая принимает по крайней мере один стиль строки и формата и возвращает длину выходной строки.

  int printf($string,$s); $s= "Shailesh"; $i= printf("Hello %s how are you?",$s); echo $i; Output : Hello Shailesh how are you? 27 echo returns void so its execution is faster than print and printf 

** Echocan принимает несколько выражений во время печати. Функция Print_r () PHP используется для возврата массива в удобочитаемую форму. Он просто написан как

 ![Print_r ($your_array)][1] 

print_r() используется для печати массива в удобочитаемом формате.

они оба являются языковыми конструкциями. echo возвращает void и возвращает print 1. echo считается немного быстрее, чем печать.

print_r () может распечатать значение, но также, если передан второй флаг, и TRUE – он вернет напечатанный результат в виде строки и ничего не отправит на стандартный вывод. О var_dump. Если XDebug-отладчик установлен, выходные результаты будут отформатированы гораздо читабельнее и понятнее.