这个就是我根据楼主的理解写出的代码,证实输出结果为“ abc1defabc2defabc3defabc4defabc5defabc6defabc7defabc8defabc9def ”。
<?php
function print_format($str)
{
$a=explode('$',$str);
for($i=1;$i<10/*这里限制循环9次*/;$i++)
{
$b[$i]=$a['0'].$i.$a['1'];//取$字符前的字符并合并$i变量再合并字符$后的字符,赋值b
}
return $b[1].$b[2].$b[3].$b[4].$b[5].$b[6].$b[7].$b[8].$b[9];//合并9次循环的数组b为一个字符串
}
echo print_format('abc$def');//输出字符
?>

解决方案 »

  1.   

    根据楼主的代码结构,应该是这样,结果与我在1楼答的一样,只不过是根据楼主的结构再发展出的
    <?php
    function print_format($str)
    {
    $a=explode('$',$str);
    for($i=1;$i<10/*这里限制循环9次*/;$i++)
    {
    $b[$i]=$a['0'].$i.$a['1'];//取$字符前的字符并合并$i变量再合并字符$后的字符,赋值b
    }
    echo $b[1].$b[2].$b[3].$b[4].$b[5].$b[6].$b[7].$b[8].$b[9];
    }
    print_format('abc$def');
    ?>
      

  2.   

    我用C#的时候,可以这样调用一个方法:a("sss{0},{1}", 参数1,参数2)
    a("sss{0},{1},fdsg{2}", 参数1,参数2,参数3)不知道PHP是否可以实现?
      

  3.   

    function print_format($str,$param=null,$param1=null,$param2=null)
    for($i=1;$i <10;$i++)
    echo $str.$i.$param.$param1.$param2;
    }$param提供了默认参数,楼主可以传递,也可以不传递.如果传递了值,就会用你的值,没有传递就用默认值null
    print_format("sss{0},{1}",参数1,参数2)
    print_format("sss{0},{1}",参数1,参数2,参数3)
    都可以
      

  4.   

    有个func_get_args()函数,你可以模拟重载.
    try..function replace()
    {
    $args = func_get_args();
    $argNum = count($args) - 1;
    if($argNum>=0)
    {
    for($i=0;$i<$argNum;$i++)
    {
    $r[] = '{'.$i.'}';
    }
    $str = array_shift($args);
    return str_replace($r,$args,$str);
    }
    return false;
    }
    echo replace("sss{0},{1},fdsg{2}",'参数1','参数2','参数3');
      

  5.   

    如果只想要输出正确就可以的话:function print_format($str) 

    for($i=1;$i <10;$i++) 
    echo str_replace('$i',$i,$str); 
    } print_format('abc$idef');