Я использую 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 ()
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 
Не имея типа возврата
 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-отладчик установлен, выходные результаты будут отформатированы гораздо читабельнее и понятнее.