按索引将字符串参数替换为数组值


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"

这应该适用于您:

(这里我只是先在键周围添加分隔符,然后只使用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
_some_function($myString, $params){
   foreach($params as $k=>$v)
        $myString = str_replace("{".$k."}",$v,$mString);
   return $myString;
}

-不要问:如果"天"有一些像"假日"这样的价值,会怎么样?)

感谢大家的回答。根据@Rizier123和@superduperawesomephp专家评论:

$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);