[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: В чем разница?
123456

$a = "123qweASD";

echo "Строка 1: {$a} <br>";
echo "Строка 2: ". $a ."<br>";
echo "Строка 3: $a<br>";


В чем разница? И как будет правильно писать?
Michael
Цитата (123456 @ 17.02.2015 - 09:57)

$a = "123qweASD";

echo "Строка 1: {$a} <br>";
echo "Строка 2: ". $a ."<br>";
echo "Строка 3: $a<br>";


В чем разница? И как будет правильно писать?

Должно быть стыдно такое спрашивать после 3 лет на форуме

_____________
There never was a struggle in the soul of a good man that was not hard
bestxp
мне нравиться вариант "Строка 2: ". $a ."<br>" просто лично и проще делать переносы и тд)

а так все правильные и все имеют место быть
123456
Цитата
Должно быть стыдно такое спрашивать после 3 лет на форуме

Я всегда пользуюсь вот таким вариантом
echo "Строка 2: ". $a ."<br>";

т.к. это удобно(можно обрабатывать переменную перед выводом).

Но частенько вижу такие записи:
echo "Строка 1: {$a} <br>";
echo "Строка 3: $a<br>";


Вот и задался вопросом, что будет более правильно на взгляд участников форума.
sergeiss
Цитата (123456 @ 17.02.2015 - 11:57)
В чем разница? И как будет правильно писать?

Если уж спрашивать "в чем разница", то надо так написать:
$a = '123qweASD';

echo "Строка 1: {$a} <br>";
echo 'Строка 2: '. $a .'<br>';
echo "Строка 3: $a<br>";

Разница в том, что варианты 1 и 3 одинаковые, производится обработка строки; внутри строки ищутся переменные ПХП и заменяются на их содержимое.
В варианте 2 производится соединение строк.

"Правильно" будут все 3 варианта.

_____________
* Хэлп по PHP
* Описалово по JavaScript
* Хэлп и СУБД для PostgreSQL

* Обучаю PHP, JS, вёрстке. Интерактивно и качественно. За разумные деньги.

* "накапливаю умение телепатии" (С) и "гуглю за ваш счет" (С)

user posted image
Hello
Цитата (bestxp @ 17.02.2015 - 11:44)
мне нравиться вариант "Строка 2: ". $a ."<br>"

Тогда лучше
echo "Строка 2: ", $a ,"<br>";

Зачем лишний раз конкатенацию делать?

_____________
VPS от 5$, первые 2 месяца - бесплатно.
SerginhoLD
всю жизнь была привычка соединять строки, а не пойми что куда-то вставлять ) Как бы привычнее и нагляднее что происходит

_____________
"internet explorer всех правильней отображает страницы" ©
kristall
1-й вариант (с фигурными скобками) нужен, если у тебя не простая переменная, а элемент/поле развесистого массива/объекта.

_____________
echo '<pre>',print_r($var, 1);die;

root@server# make love && war
Arh
Я придерживаюсь такого стиля
echo 'Строка 2: '. $a .'<br>';


Всему своё место.
Если нужен только текст, то смысл его обрамлять двойными кавычками?
Если в текст нужно вставить динамическое значение, тогда точки.

разные вещи
$text = 'Привет $name';
$text = 'Привет '.$name;


$a = '\r\n';
$a = "\r\n";


_____________
Промокод предоставляет скидку на заказ домена и/или хостинга reg.ru
BFCC-3895-8804-9ED2
sergeiss
Цитата (SerginhoLD @ 17.02.2015 - 13:57)
всю жизнь была привычка соединять строки, а не пойми что куда-то вставлять ) Как бы привычнее и нагляднее что происходит

Когда формируешь большую строку, то зачастую существенно нагляднее вставить переменную внутрь. Иначе на большом количестве (ненужных) точек и кавычек глаза путаются.
Да и не обязательно большую строку. Например, формируешь запрос к БД. Одно дело, когда вот так
$sql = "select * from `table1` where `id`=".$params['id']." and `name` like '".$params['name']."%'";

и совсем другое дело, когда так
$sql = "select * from `table1` where `id`={$params['id']} and `name` like '{$params['name']}%'";

Для меня второй вариант существенно нагляднее. А в первом варианте можно легко запутаться в кавычках разных. Особенно, если подобных подстановок будет штук 10-15 подряд, в разных местах запроса.

PS. И кстати. Вариант, когда вся строка внутри двойных кавычек, безо всяких конкатенаций, очень легко использовать как простой шаблонизатор :) Если интересно, но не понятно как, то могу чуть подробнее.

_____________
* Хэлп по PHP
* Описалово по JavaScript
* Хэлп и СУБД для PostgreSQL

* Обучаю PHP, JS, вёрстке. Интерактивно и качественно. За разумные деньги.

* "накапливаю умение телепатии" (С) и "гуглю за ваш счет" (С)

user posted image
stump
Если строка указывается в двойных кавычках, либо при помощи heredoc, переменные внутри нее обрабатываются.

Существует два типа синтаксиса: простой и сложный. Простой синтаксис более легок и удобен. Он дает возможность обработки переменной, значения массива (array) или свойства объекта (object) с минимумом усилий.

Сложный синтаксис может быть определен по фигурным скобкам, окружающим выражение.

Простой синтаксис

Если интерпретатор встречает знак доллара ($), он захватывает так много символов, сколько возможно, чтобы сформировать правильное имя переменной. Аналогично могут быть обработаны элемент массива (array) или свойство объекта (object). В индексах массива закрывающая квадратная скобка (]) обозначает конец определения индекса. Для свойств объекта применяются те же правила, что и для простых переменных.

Сложный (фигурный) синтаксис

Он называется сложным не потому, что труден в понимании, а потому что позволяет использовать сложные выражения.

Любая скалярная переменная, элемент массива или свойство объекта, отображаемое в строку, может быть представлена в строке этим синтаксисом. Просто запишите выражение так же, как и вне строки, а затем заключите его в { и }. Поскольку { не может быть экранирован, этот синтаксис будет распознаваться только когда $ следует непосредственно за {. Используйте {\$, чтобы напечатать {$. С помощью этого синтаксиса также возможен доступ к свойствам объекта внутри строк.

Больше информации в разделе мануала строки

оператор конкатенации ('.') возвращает строку, представляющую собой соединение левого и правого аргумента

_____________
Трус не играет в хокей
Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2024 Invision Power Services, Inc.