按索引用数组值替换字符串参数
Replace string parameters with an array value by index
是否有一些本机 php 接收字符串和数组作为参数并用字符串中各自的值替换数组的索引?
类似于:
$myString = "{days} days left for {holiday}";
$params = array(
"days" => 275,
"holiday" => "Christmas"
);
echo _some_function($myString, $params);
//Outputs: "275 days left for Christmas"
_some_function($myString, $params){
foreach($params as $k=>$v)
$myString = str_replace("{".$k."}",$v,$mString);
return $myString;
}
-"days" 的 ask:What 没有类似 "holiday" 的值;)
这应该适合你:
(这里我只是先在键周围添加分隔符,然后使用 strtr()
替换值)
<?php
$myString = "{days} days left for {holiday}";
$delimiters = ["{", "}"];
$params = [
"days" => 275,
"holiday" => "Christmas"
];
function someCrazyFunction($myString, $params, $delimiters) {
foreach($params as $k => $v) {
$params[$delimiters[0] . $k . $delimiters[1]] = $v;
unset($params[$k]);
}
return strtr($myString, $params);
}
echo someCrazyFunction($myString, $params, $delimiters);
?>
输出:
275 days left for Christmas
谢谢大家的回答。
根据@Rizier123 和@superduperawesomephpexpert 评论:
$myString = "{days} days left for {holiday}";
$params = array(
"days" => 275,
"holiday" => "Christmas"
);
$indexes = array_map(function($v){
return '{'.$v.'}';
}, array_keys($params));
echo str_replace($indexes, $params, $myString);
是否有一些本机 php 接收字符串和数组作为参数并用字符串中各自的值替换数组的索引?
类似于:
$myString = "{days} days left for {holiday}";
$params = array(
"days" => 275,
"holiday" => "Christmas"
);
echo _some_function($myString, $params);
//Outputs: "275 days left for Christmas"
_some_function($myString, $params){
foreach($params as $k=>$v)
$myString = str_replace("{".$k."}",$v,$mString);
return $myString;
}
-"days" 的 ask:What 没有类似 "holiday" 的值;)
这应该适合你:
(这里我只是先在键周围添加分隔符,然后使用 strtr()
替换值)
<?php
$myString = "{days} days left for {holiday}";
$delimiters = ["{", "}"];
$params = [
"days" => 275,
"holiday" => "Christmas"
];
function someCrazyFunction($myString, $params, $delimiters) {
foreach($params as $k => $v) {
$params[$delimiters[0] . $k . $delimiters[1]] = $v;
unset($params[$k]);
}
return strtr($myString, $params);
}
echo someCrazyFunction($myString, $params, $delimiters);
?>
输出:
275 days left for Christmas
谢谢大家的回答。 根据@Rizier123 和@superduperawesomephpexpert 评论:
$myString = "{days} days left for {holiday}";
$params = array(
"days" => 275,
"holiday" => "Christmas"
);
$indexes = array_map(function($v){
return '{'.$v.'}';
}, array_keys($params));
echo str_replace($indexes, $params, $myString);