在php中格式化错误的参数

时间:2017-09-19 04:51:43

标签: php

我试图创建一个接受3个参数的函数,然后用正确的句子对它们进行排序。例如,

echo formatExercise('There are {0} {1} in the tree!', 5, monkeys)

输出应该是:树中有5只猴子!

我可以通过使用sprtinf来做到这一点,但我在将其实现为完整函数时可能会遇到任何参数而无需更改代码(sprintf也很好)。例如:

<?php
function formatExercise() {
   $str = 'monkeys';
   $num = 5;

   $fmt = 'There are %d %s in the tree!';
   echo sprintf($fmt, $num, $str);
 }

echo formatExercise();
?>

上面给出了我们&#39;树中有5只猴子!&#39;

我知道我必须传递参数。我的理解是这样的:

function formatExercise($fmt, $num, $str)

但我不确定如何编写该功能。我是初学者,所以请有人提供一些见解。

2 个答案:

答案 0 :(得分:-1)

如果您想使用{#}字符,这可能就是您所希望的:

function splat ($sentence, $num, $creatures){
    $first_pass = str_replace('{0}', $num, $sentence);
    $second_pass = str_replace('{1}', $creatures, $first_pass);
    return $second_pass;
}

echo splat('There are {0} {1} in the tree', 5, "monkeys");

或者如果你更喜欢使用sprintf,你可以这样做:

function formatExercise($fmt, $num, $str) {
    echo sprintf($fmt, $num, $str);
}

echo formatExercise('There are %d %s in the tree!', 5, 'monkeys');

答案 1 :(得分:-1)

是的,只需添加参数:

var instance = ModelManager()

class ModelManager: NSObject {

var database: FMDatabase? = nil
var database2: FMDatabase? = nil
var resultSet: FMResultSet!

class func getInstance(sqllite:String) -> ModelManager {
    if(instance.database == nil){
        instance.database = FMDatabase(path: Util.getPath(sqllite))
    }
    return instance
}
class func getInstance2(sqllite:String) -> ModelManager {
    if(instance.database2 == nil){
        instance.database2 = FMDatabase(path: Util.getPath(sqllite))
    }
    return instance
}