Я новичок в 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, однако мне не удалось найти ничего подобного.
Да, используйте шаблон PHP: $f_name = "John"; $l_name = "Smith"; $sample = "{$f_name}'s last name is {$l_name}."






Вы можете добавить любую переменную к любой другой переменной с помощью конкатенация строк, используя запись через точку:
$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
Вместо того, чтобы повторять результат sprintf, просто назначьте его переменной.