В чём разница между {$x} и ${x}?

133
17 января 2021, 23:50

В php есть минимум 3 способа вставки переменной в строку:

https://ideone.com/sN22RT

$x = 'test';
echo("$x {$x} ${x}");

Выводится

test test test

То, что ${x} и {$x} (в отличие от $x) можно использовать перед буквенноцифровым символом понятно, а чем сами эти два способа отличаются между собой?

Answer 1

Отличие в том, что {$x} - это фича именно двойных кавычек, формат обращения к переменной.

А ${x} - это это переменные переменные, общий для языка синтаксис формирования имени переменной из выражения. И позволяет писать внутри фигурных скобок практически любой код на пхп:

function y() {return 'x';}
$x = $y = 'test';
$z = 'w';
echo ${++$z}, " ", ${trim('x')}," ", ${y()}, " ", ${'x'.''};

но вот то, что он работает в закавыченных строках тоже -

echo " ${++$z} ${trim('x')} ${y()} ${'x'.''}";

это для меня сюрприз. И выглядит это несколько жутковато. Но, видимо, это результат проведенной Никитой работы по унификации языка.

READ ALSO
Разделение строки на равные части

Разделение строки на равные части

Я сделал сделал разделение строки на равные части с хвостом:

185
Кто знаком с phpQuery?

Кто знаком с phpQuery?

Есть много одинаковых классов, и она все парсятся нормально, выходит 100 классов, но когда я с этих классов парсю href то парсит только только...

98
Проблемы с функцией array_search

Проблемы с функцией array_search

Есть код php, который не пропускает формат jpeg, в чем проблема я уже понял, когда он находит формат jpeg в массиве, возвращает true и следом порядковый...

127