Змішування змінної PHP з рядковим літералом


140

Скажіть, у мене є змінна, $testі вона визначається як:$test = 'cheese'

Я хочу вивести cheesey, що я можу зробити так:

echo $test . 'y'

Але я хотів би спростити код до чогось більш подібного (що не працює):

echo "$testy"

Чи є спосіб yповодитись з тим, що він був окремим від змінної?


1
по $test = cheese;ви мали в виду $test = 'cheese'; в кінці вашого поста (якщо я не помиляюся) ...
Ізгой

Відповіді:


242
echo "{$test}y";

Ви можете використовувати дужки, щоб усунути неоднозначність при інтерполяції змінних безпосередньо в рядках.

Крім того, це не працює з цитатами. Так:

echo '{$test}y';

виведе

{$test}y

1
чи можна також вбудовувати виклики функцій за допомогою такого методу? Щось схоже на"foo{implode(',', [abc])}bar"
velop

@velop Nope. Побудова рядків часто робиться після того, як відбулася обробка. Виклик функцій в середині підготовки результатів, часто це не те, що ви хочете. Спробуйте спочатку викликати функцію, зберігаючи результат у змінній, а потім ви можете включити її в рядок echo "like so: $var";.
Йохем Куджперс

як вбудувати потрійний оператор, який оцінює до двох різних рядків у рядку?
oldboy

50

Ви можете використовувати {}arround вашої змінної, щоб відокремити її від того, що після:

echo "{$test}y"

В якості довідки ви можете ознайомитись з розділом Variable parsing - Complex (curly) синтаксису в посібнику PHP.


Дякую. Я спробував прочитати посібник з рядків, але не був впевнений, що саме шукав, щоб шукати його для того, що я шукав.
Метт Макдональд

2
Запрошуємо вас :-) Так, не завжди легко знайти потрібний розділ, коли ви насправді не знаєте, що шукаєте ^^
Pascal MARTIN

Варто зауважити, що потрапивши до {}, ви можете використовувати вирази, а не лише імена змінних, наприклад {$ x-> y [3]} чи будь-що інше.
TextGeek

3

Приклад:

$test = "chees";
"${test}y";

Він виведе:

сирний

Це саме те, що ви шукаєте.


-3
$bucket = '$node->' . $fieldname . "['und'][0]['value'] = " . '$form_state' . "['values']['" . $fieldname . "']";

print $bucket;

врожайність:

$node->mindd_2_study_status['und'][0]['value'] = $form_state['values']
['mindd_2_study_status']
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.