PHP是否具有类似于Python的f字符串函数的字符串函数? (不是str.format())

时间:2019-02-25 22:18:17

标签: php string f-string

我是PHP的新手,请原谅这个问题。

我想知道PHP是否具有字符串格式函数(例如Python的f-strings函数)而不是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 :(得分:3)

您可以使用点符号将string concatenation的任何变量附加到其他变量:

.=

$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

这可以用大括号进一步阐明:

{{1}}