string — Разница в создании переменных переменных в скобках или двойных знаках доллара?

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

$foo = 'hello';
$$foo = 'hi';
echo $hello; // 'hi'

$baz = 'goodbye';
${$baz} = 'bye';
echo $goodbye; // 'bye'

Единственное отличие, которое он упоминает в руководстве, заключается в использовании массивов. Есть ли другая заметная разница между этими двумя? Какой из них лучше для каких ситуаций?

2

Решение

Обе версии в основном одинаковы.

Обозначение фигурных скобок используется в тех случаях, когда может быть неоднозначность:

$foo = 'bar';
$bar = [];
${$foo}[] = 'foobar';

var_dump($bar); // foobar

Если вы опустите скобки в приведенном выше примере, вы получите фатальную ошибку, с скобками, она работает нормально.

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

1

Другие решения

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

1

По вопросам рекламы [email protected]