Я использую echo
и print_r
много, и почти никогда не использую print
.
Я чувствую, что echo
- это макрос, а print_r
- псевдоним var_dump
.
Но это не стандартный способ объяснить различия.
Я использую 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 вместо хранения и считывания значений. Скорость будет сопоставимой.Чтобы добавить к ответ John, 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
Вся информация о дампе переменной подобный тип элемента и подэлемент
** Echocan принимает несколько выражений во время печати. Функция Print_r() PHP используется для возврата массива в удобочитаемую форму. Он просто написан как
![Print_r ($your_array)][1]
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
print_r()
используется для печати массива в удобочитаемом формате.
Разница между 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" }
они оба являются языковыми конструкциями. echo возвращает void и возвращает print 1. echo считается немного быстрее, чем печать.
print_r() может печатать значение, но также, если передан второй флаг, и TRUE - он вернет напечатанный результат в виде строки и ничего не отправит на стандартный вывод. О var_dump. Если XDebug-отладчик установлен, выходные результаты будут отформатированы гораздо читабельнее и понятнее.
Еще одна деталь, которую можно добавить, и которая может оказаться полезной, заключается в том, что var_dump усекает очень длинные тексты, показывая... и указывая оставшуюся длину, например: even '... (length = 4482) Если вы используете echo, этого не происходит.
Я знаю, что опоздал, но я хотел бы добавить, что в моем коде
$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". Вот
Я был бы счастлив, если бы кто-нибудь мог пролить свет на это поведение.