В чем разница между echo, print и print_r в PHP? - PullRequest
189 голосов
/ 30 октября 2009

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

Мне кажется, echo - это макрос, а print_r - псевдоним var_dump.

.

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

Ответы [ 11 ]

181 голосов
/ 30 октября 2009

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] => 
)
98 голосов
/ 07 июня 2010

эхо

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

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

печать

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

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

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

print_r ()

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

var_dump ()

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

var_export ()

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

Примечания:

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

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

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

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

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

  • echo: немедленно выведет значение на выход.
  • returning: возвратит вывод функции в виде строки. Полезно для регистрации и т. Д.
5 голосов
/ 13 декабря 2012
echo

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

print

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

print_r()

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

4 голосов
/ 03 октября 2018

Разница между 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 construct print также является языковой конструкцией, а не реальной функцией. Различия между 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)

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

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" }
3 голосов
/ 22 августа 2013

Эхо :

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

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

Массив без печати

Печать

Это реальная функция

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

Обязательные скобки

Массив без печати

print_r

Печать в удобочитаемом формате

Строка не в кавычках

Не подробная информация о переменной, как тип и все

var_dump

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

2 голосов
/ 21 января 2015

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

2 голосов
/ 30 января 2014

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
2 голосов
/ 02 декабря 2013

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

![Print_r ($your_array)][1]
0 голосов
/ 15 марта 2016

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...