print_r не совсем псевдоним var_dump - он выводит в другом формате. Примечательно, что выходные данные из var_dump также включают в себя «тип» каждой переменной.
Еще одна деталь, которую можно добавить и которая может быть полезной, заключается в том, что var_dump усекает очень длинные тексты, показывая ... и указывая оставшуюся длину, например: even '... (length = 4482) Если вы используете echo, этого не происходит.
Йордан
Ответы:
186
printи echoболее или менее одинаковы; обе языковые конструкции отображают строки. Различия незначительны: printимеет возвращаемое значение 1, поэтому его можно использовать в выражениях, тогда как echoимеет voidтип возвращаемого значения; echoможет принимать несколько параметров, хотя такое использование редко; echoнемного быстрее чемprint . (Лично я всегда пользуюсь echo, никогда print.)
var_dumpвыводит подробный дамп переменной, включая ее тип и тип любых подпунктов (если это массив или объект). print_rвыводит переменную в более понятной для человека форме: строки не заключаются в кавычки, информация о типах не указывается, размеры массивов не указываются и т. д.
var_dumpобычно более полезен, чем print_rпри отладке, по моему опыту. Это особенно полезно, когда вы не знаете точно, какие значения / типы у вас есть в ваших переменных. Рассмотрим эту тестовую программу:
Выводит одну или несколько строк, разделенных запятыми
Нет возвращаемого значения
например 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 $a, $b;синтаксис, когда вы можете просто сделать echo $a . $b;: если $ a или $ b действительно большие строки, то последняя будет использовать дополнительную память и время, создавая отдельную сцепленную версию строк в памяти перед этим. может начать вывод либо в браузер.
Томасруттер
Конечно, вы могли бы просто использовать echo $a; echo $b;тоже.
Томасруттер
16
Просто чтобы добавить к ответу Джона , echoдолжен быть единственный, который вы используете для печати контента на странице.
printнемного медленнее. var_dump()и print_r()должен использоваться только для отладки.
Стоит также отметить , что print_r()и var_dump()отзовется по умолчанию, добавить второй аргумент , по print_r()крайней мере , которое вычисляется верно , чтобы заставить его вернуться вместо этого, например print_r($array, TRUE).
Разница между эхом и возвратом:
echo: немедленно выведет значение на выход.
returning: возвратит вывод функции в виде строки. Полезно для регистрации и т. Д.
Только потому, что вы подняли вопрос, в чем разница между echoing и returning?
Дэвид говорит восстановить Монику
2
ничего себе, я хотел бы знать о возвращаемом параметре :( в основном вы можете сделать $ foo = print_r ($ array, true) и использовать его другими способами (в журнал, таблицу и т. д.)
FryGuy
Я print_rдовольно часто использовал возвращаемый параметр, когда писал код PHP. Тем не менее, я, как правило, писал print_r( $foo, 1 );. Это быстрее печатать;) И по этому поводу меня не очень заботит удобочитаемость, так как я нахожу название print_rне слишком наглядным.
exhuma
var_dump()не поддерживает второй аргумент, позволяющий ему возвращать значение, как print_r()делает, потому что var_dump()может принимать несколько аргументов для вывода.
Томасруттер
@thomasrutter Правда, не уверен, почему я это написал.
Разница между 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 Worldprint"Hello ","World";// Multiple arguments - NOT POSSIBLE with print
$var_1=55;print"$var_1";// this will print 55print"var_1=".$var_1;// this will print var_1=55print45+$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" }
Есть много проблем с этим ответом. printэто не настоящая функция, это языковая конструкция, как эхо. Это также может быть использовано как утверждение. echoэто не утверждение , ни он может быть использован в одном. printвовсе не требует скобок, ни делать либо эхо или печать использовать круглые скобки , как будет функционировать. Вы также пропустили одно из основных отличий - echo принимает несколько строк, которые разделяются запятыми.
Томасруттер
2
... и вы отправили этот ответ, когда несколько ответов уже существуют и содержат правильную информацию.
Томасруттер
2
** Echocan принимать несколько выражений, а печать - нет. PHP-функция Print_r () используется для возврата массива в удобочитаемой форме. Это просто написано как
echo: echo - это языковая конструкция, в которой нет необходимости использовать круглые скобки, и она может принимать любое количество параметров и возвращать void.
print: это языковая конструкция, в которой нет необходимости использовать круглые скобки, достаточно взять один параметр и вернуть
1 always.intprint(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:HelloShailesh how are you?27
echo returns void so its execution is faster than printand printf
print_r () может распечатать значение, но также, если второй параметр флага передан и равен TRUE - он вернет напечатанный результат в виде строки и ничего не отправит на стандартный вывод. О var_dump. Если установлен отладчик XDebug, выходные результаты будут отформатированы гораздо более читабельным и понятным способом.
Ответы:
print
иecho
более или менее одинаковы; обе языковые конструкции отображают строки. Различия незначительны:print
имеет возвращаемое значение 1, поэтому его можно использовать в выражениях, тогда какecho
имеетvoid
тип возвращаемого значения;echo
может принимать несколько параметров, хотя такое использование редко;echo
немного быстрее чемprint
. (Лично я всегда пользуюсьecho
, никогдаprint
.)var_dump
выводит подробный дамп переменной, включая ее тип и тип любых подпунктов (если это массив или объект).print_r
выводит переменную в более понятной для человека форме: строки не заключаются в кавычки, информация о типах не указывается, размеры массивов не указываются и т. д.var_dump
обычно более полезен, чемprint_r
при отладке, по моему опыту. Это особенно полезно, когда вы не знаете точно, какие значения / типы у вас есть в ваших переменных. Рассмотрим эту тестовую программу:С помощью
print_r
вы не можете определить разницу между0
и0.0
, илиfalse
и''
:источник
эхо
Нет возвращаемого значения
например
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 $a, $b;
синтаксис, когда вы можете просто сделатьecho $a . $b;
: если $ a или $ b действительно большие строки, то последняя будет использовать дополнительную память и время, создавая отдельную сцепленную версию строк в памяти перед этим. может начать вывод либо в браузер.echo $a; echo $b;
тоже.Просто чтобы добавить к ответу Джона ,
echo
должен быть единственный, который вы используете для печати контента на странице.print
немного медленнее.var_dump()
иprint_r()
должен использоваться только для отладки.Стоит также отметить , что
print_r()
иvar_dump()
отзовется по умолчанию, добавить второй аргумент , поprint_r()
крайней мере , которое вычисляется верно , чтобы заставить его вернуться вместо этого, напримерprint_r($array, TRUE)
.Разница между эхом и возвратом:
источник
echo
ing иreturn
ing?print_r
довольно часто использовал возвращаемый параметр, когда писал код PHP. Тем не менее, я, как правило, писалprint_r( $foo, 1 );
. Это быстрее печатать;) И по этому поводу меня не очень заботит удобочитаемость, так как я нахожу названиеprint_r
не слишком наглядным.var_dump()
не поддерживает второй аргумент, позволяющий ему возвращать значение, какprint_r()
делает, потому чтоvar_dump()
может принимать несколько аргументов для вывода.Не имея тип возврата
Иметь тип возврата
Выходы в формате
источник
Разница между echo , print , print_r и var_dump очень проста.
На самом деле echo - это не функция, а языковая конструкция, которая используется для вывода на печать. Это немного быстрее, чем печать.
Вы также можете использовать выражение echo с круглыми скобками или без них
Так же, как эхо- конструкция, печать также является языковой конструкцией, а не реальной функцией. Различия между echo и print в том, что print принимает только один аргумент, а print всегда возвращает 1. Принимая во внимание, что echo не имеет возвращаемого значения. Таким образом, оператор print может использоваться в выражениях.
Как и эхо , печать может использоваться с круглыми скобками или без них.
Функция print_r () используется для печати понятной человеку информации о переменной. Если аргумент является массивом, функция print_r () печатает свои ключи и элементы (то же самое для объектов).
Функция var_dump обычно используется для отладки и печатает информацию (тип и значение) о переменной / массиве / объекте.
источник
Эхо :
Это утверждение, а не функция Нет возвращаемого значения
Не требуются скобки
Не печатать массив
Распечатать
Это реальная функция
Тип возврата 1
Обязательные скобки
Не печатать массив
print_r
Печать в удобочитаемом формате
Строка не в кавычках
Не подробная информация о переменной, как тип и все
var_dump
Вся информация о дампе переменной, такая как тип элемента и вложенного элемента
источник
print
это не настоящая функция, это языковая конструкция, как эхо. Это также может быть использовано как утверждение.echo
это не утверждение , ни он может быть использован в одном.print
вовсе не требует скобок, ни делать либо эхо или печать использовать круглые скобки , как будет функционировать. Вы также пропустили одно из основных отличий - echo принимает несколько строк, которые разделяются запятыми.** Echocan принимать несколько выражений, а печать - нет. PHP-функция Print_r () используется для возврата массива в удобочитаемой форме. Это просто написано как
источник
echo: echo - это языковая конструкция, в которой нет необходимости использовать круглые скобки, и она может принимать любое количество параметров и возвращать void.
print: это языковая конструкция, в которой нет необходимости использовать круглые скобки, достаточно взять один параметр и вернуть
prinf: это функция, которая принимает как минимум одну строку и стиль форматирования и возвращает длину выходной строки.
источник
print_r()
используется для печати массива в удобочитаемом формате.источник
print_r () может распечатать значение, но также, если второй параметр флага передан и равен TRUE - он вернет напечатанный результат в виде строки и ничего не отправит на стандартный вывод. О var_dump. Если установлен отладчик XDebug, выходные результаты будут отформатированы гораздо более читабельным и понятным способом.
источник
они оба являются языковыми конструкциями. echo возвращает void и print возвращает 1. echo считается немного быстрее, чем print.
источник