Использование эхо PHP, когда разница между. а материя? - PullRequest
4 голосов
/ 14 июля 2010

Недавно я заметил, что в PHP есть два способа печати нескольких операторов.

echo $a.$b; // Echo's $a and $b conjoined, and
echo $a,$b; // Echo's $a and echo's $b.

Есть ли момент времени, когда разница между этими двумя синтаксисами имеет значение?

Ответы [ 5 ]

6 голосов
/ 14 июля 2010

Есть разница, на которую стоит обратить внимание.Со вторым синтаксом первый параметр будет по-прежнему выводиться, даже если второй вызывает ошибку.

<?php
echo 1, error(); // This outputs 1, then it displays an error 
?>

Хотя первый параметр не будет отображать первую часть.

<?php
echo '1' . error(); // Only displays an error
?>

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

6 голосов
/ 14 июля 2010

Реально, нет.

echo $a.$b сначала объединяет $a и $b в новую строку , затем передает ее в качестве параметра echo, который печатает ееout.

echo $a,$b дает два параметра - echo, которые будут печатать оба.

Последний немного более эффективен.Хотя это не совсем то, что вы обычно замечаете.

Существует разница в том, как это оценивается.echo $a, $b похоже на написание echo $a; echo $b;, два отдельных вызова.$b будет оцениваться после $a, равного echo 'd.Это может иметь значение, если ваши аргументы являются вызовами функций, которые сами по себе echo что-то, но опять же, на практике это не имеет значения, поскольку это плохая практика.

4 голосов
/ 14 июля 2010

Разница не имеет значения в подавляющем большинстве обстоятельств.

может иметь значение , если вещи, которые вы объединяете вместе, имеют исключительно большое значение, где сцепление может быть немного медленнее и может занимать больше памяти. Однако сосредоточение внимания на микрооптимизации, как правило, является наихудшим способом ускорить процесс.

1 голос
/ 14 июля 2010

программно:

  1. объединить 2 строки в 1 переменную и отправить строковое представление в выходной буфер.

  2. цикл по 2 переменным и отправка строкового представления в выходной буфер.

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

0 голосов
/ 14 июля 2010

Я спросил члена ядра PHP много лет назад, и они сказали нет. Это просто еще один альтернативный синтаксис, который позволяет вам иметь более одного способа делать вещи. Под капотом могут быть некоторые преимущества, но человек ничего не заметит.

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