Какая разница между echo, print и print_r в PHP?

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

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

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

Ответ 1

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

Ответ 2

эхо

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

    например. 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 вместо хранения и считывания значений. Скорость будет сопоставимой.

Ответ 3

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

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

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

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

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

Ответ 4

echo

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

print

Введите тип возврата

print_r()

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

Ответ 5

Эхо:

Это утверждение не является функцией Нет возвращаемого значения

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

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

Печать

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

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

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

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

print_r

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

Строка не в комментариях

Необязательная информация о переменной типа типа и всех

var_dump

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

Ответ 6

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

![Print_r ($your_array)][1]

Ответ 7

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

   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

Ответ 8

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

Ответ 9

Разница между echo, print, print_r и var_dump очень проста.

эхо

На самом деле echo - это не функция, а языковая конструкция, которая используется для вывода на печать. Это немного быстрее, чем печать.

echo "Hello World";    // this will print Hello World
echo "Hello ","World"; // Multiple arguments - this will print Hello World

$var_1=55;
echo "$var_1";               // this will print 55
echo "var_1=".$var_1;        // this will print var_1=55
echo 45+$var_1;              // this will print 100

$var_2="PHP";
echo "$var_2";                   // this will print PHP

$var_3=array(99,98,97)           // Arrays are not possible with echo (loop or index  value required)
$var_4=array("P"=>"3","J"=>"4"); // Arrays are not possible with echo (loop or index  value required)

Вы также можете использовать оператор echo с круглыми скобками или без них

echo ("Hello World");   // this will print Hello World

Распечатать

Так же, как эхо- конструкция, печать также является языковой конструкцией, а не реальной функцией. Различия между echo и print в том, что print принимает только один аргумент, а print всегда возвращает 1. Принимая во внимание, что echo не имеет возвращаемого значения. Таким образом, оператор print может использоваться в выражениях.

print "Hello World";    // this will print Hello World
print "Hello ","World"; // Multiple arguments - NOT POSSIBLE with print
$var_1=55;
print "$var_1";               // this will print 55
print "var_1=".$var_1;        // this will print var_1=55
print 45+$var_1;              // this will print 100

$var_2="PHP";
print "$var_2";                   // this will print PHP

$var_3=array(99,98,97)           // Arrays are not possible with print (loop or index  value required)
$var_4=array("P"=>"3","J"=>"4"); // Arrays are not possible with print (loop or index  value required)

Как и эхо, печать может использоваться с круглыми скобками или без них.

print ("Hello World");   // this will print Hello World

print_r

Функция print_r() используется для печати понятной человеку информации о переменной. Если аргумент является массивом, функция print_r() печатает свои ключи и элементы (то же самое для объектов).

print_r ("Hello World");    // this will print Hello World

$var_1=55;
print_r ("$var_1");               // this will print 55
print_r ("var_1=".$var_1);        // this will print var_1=55
print_r (45+$var_1);              // this will print 100

$var_2="PHP";
print_r ("$var_2");                // this will print PHP

$var_3=array(99,98,97)             // this will print Array ( [0] => 1 [1] => 2 [2] => 3 ) 
$var_4=array("P"=>"3","J"=>"4");   // this will print  Array ( [P] => 3 [J] => 4 ) 

var_dump

Функция var_dump обычно используется для отладки и печатает информацию (тип и значение) о переменной/массиве/объекте.

var_dump($var_1);     // this will print  int(5444) 
var_dump($var_2);     // this will print  string(5) "Hello" 
var_dump($var_3);     // this will print  array(3) { [0]=> int(1) [1]=> int(2) [2]=> int(3) } 
var_dump($var_4);     // this will print  array(2) { ["P"]=> string(1) "3" ["J"]=> string(1) "4" }

Ответ 10

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

Ответ 11

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

Ответ 12

Еще одна деталь, которую можно добавить, и которая может оказаться полезной, заключается в том, что var_dump усекает очень длинные тексты, показывая... и указывая оставшуюся длину, например: even '... (length = 4482) Если вы используете echo, этого не происходит.

Ответ 13

Я знаю, что опоздал, но я хотел бы добавить, что в моем коде

 $stmt = mysqli_stmt_init($connection) or echo "error at init"; 

выдает ошибку "синтаксическая ошибка, неожиданное" эхо "(T_ECHO)"

в то время как

 $stmt = mysqli_stmt_init($connection) or print "error at init";

работает отлично.

Документы о эхе говорят "эхо ( в отличии от некоторых других языковых конструкций) не ведет себя как функция" здесь, но о печати документах также говорит, "печать не на самом деле реальная функция (это конструкция языка)" здесь. Поэтому я не уверен, почему. В документах echo и print также говорится: "Основные отличия echo в том, что print принимает только один аргумент и всегда возвращает 1". Вот

Я был бы счастлив, если бы кто-нибудь мог пролить свет на это поведение.