Есть ли в PHP строковая функция, такая как функция f-string в Python? (не ул.формат())

Я новичок в PHP, поэтому извините за вопрос.

Мне было интересно, есть ли в PHP функция форматирования строк, такая как функция f-strings Python, а не str.format(). Я видел несколько сообщений на эту тему, но большинство примеров, принятых в качестве ответов, относятся к более старому способу работы Python с форматированными строками str.format(). В моем случае я хотел бы создать переменную, используя форматированную строку, например (Python):

f_name = "John"
l_name = "Smith"
sample = f`{f_name}'s last name is {l_name}.`
print(sample)

Я знаю, что могу использовать (PHP):

 $num = 5;
 $location = 'tree';
 $format = 'There are %d monkeys in the %s';
 echo sprintf($format, $num, $location);

но что, если я хочу использовать $format в качестве переменной? Основная идея состоит в том, чтобы создать динамическую переменную на основе других переменных, например:

$db_type = $settings['db_type'];  # mysql
$db_host = $settings['db_host'];  # localhost
$db_name = $settings['db_name'];  # sample

var $format = "%s:host=%s; dbname=%s";

# Not sure what to do after that, but I can use string concatenation:

var $format = $db_type + ":host = " + $db_host + "; dbname = " + $db_name;
var $connection = new PDO($format, $db_user, $db_password);

ПРИМЕЧАНИЕ. Я знаю, что существует несколько способов конкатенации строк в соответствии с документацией PHP, однако мне не удалось найти ничего подобного.

Вместо того, чтобы повторять результат sprintf, просто назначьте его переменной.

Patrick Q 25.02.2019 23:23

Да, используйте шаблон PHP: $f_name = "John"; $l_name = "Smith"; $sample = "{$f_name}'s last name is {$l_name}."

user1334621 25.02.2019 23:24
Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Symfony Station Communiqué - 7 июля 2023 г
Symfony Station Communiqué - 7 июля 2023 г
Это коммюнике первоначально появилось на Symfony Station .
Оживление вашего приложения Laravel: Понимание режима обслуживания
Оживление вашего приложения Laravel: Понимание режима обслуживания
Здравствуйте, разработчики! В сегодняшней статье мы рассмотрим важный аспект управления приложениями, который часто упускается из виду в суете...
Установка и настройка Nginx и PHP на Ubuntu-сервере
Установка и настройка Nginx и PHP на Ubuntu-сервере
В этот раз я сделаю руководство по установке и настройке nginx и php на Ubuntu OS.
Коллекции в Laravel более простым способом
Коллекции в Laravel более простым способом
Привет, читатели, сегодня мы узнаем о коллекциях. В Laravel коллекции - это способ манипулировать массивами и играть с массивами данных. Благодаря...
Как установить PHP на Mac
Как установить PHP на Mac
PHP - это популярный язык программирования, который используется для разработки веб-приложений. Если вы используете Mac и хотите разрабатывать...
5
2
3 602
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Вы можете добавить любую переменную к любой другой переменной с помощью конкатенация строк, используя запись через точку:

$num = 5;
$location = 'tree';
$output = 'There are ' . $num . ' monkeys in the ' . $location; // There are 5 monkeys in the tree

Или обозначение .=:

$a = "Hello ";
$b = "World";
$a .= $b; // $a now contains "Hello World"

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

$num = 5;
$location = 'tree';
echo 'There are $num monkeys in the $location'; // There are $num monkeys in the $location
echo "There are $num monkeys in the $location"; // There are 5 monkeys in the tree

И это работает так же при назначении переменным:

$num = 5;
$location = 'tree';
$output = "There are $num monkeys in the $location"; // There are 5 monkeys in the tree

Это можно уточнить с помощью фигурных скобок:

$output = "There are {$num} monkeys in the {$location}"; // There are 5 monkeys in the tree
// OR
$output = "There are ${num} monkeys in the ${location}"; // There are 5 monkeys in the tree

Очень ясно! Видимо, я искал не в том месте.

artomason 25.02.2019 23:36

Итак, мне поставить знак доллара до или после {?

Dharman 25.02.2019 23:43

@Dharman - Для ситуаций самый это не имеет значения, хотя {$var} немного предпочтительнее. См. этот вопрос... который вы сами просили :)

Obsidian Age 25.02.2019 23:55

Другие вопросы по теме