Есть ли в PHP строковая функция, такая как функция Python в f-string?(не str.format ()) - PullRequest
0 голосов
/ 26 февраля 2019

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

Мне было интересно, есть ли в PHP функция строкового формата, такая как функция f-строк в 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, однако я не былсмог найти что-нибудь подобное.

1 Ответ

0 голосов
/ 26 февраля 2019

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

$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
...