如何按订单更换

时间:2014-05-07 21:02:04

标签: php replace

如何有条不紊地更换东西?例如:

$var = "let's count: ?, ?, ?";

现在我想将其替换为1,2,3,结果为"让我们计算1,2,3和#34;。我怎样才能做到这一点?我不能用"%s"并使用vsprintf()与数组,因为我想尊重整数和浮点数。但我想用数组来做。例如:

$var = replace( $var, "?", array(1, 2, 3) );

我该怎么办?我无从得到任何想法。

6 个答案:

答案 0 :(得分:6)

怎么样:

$var = "let's count: ?, ?, ?";
$numbers = array(1,2,3);

foreach( $numbers as $number ) {
  $var = preg_replace("/\?/", $number, $var, 1);
}

答案 1 :(得分:4)

PHP很有趣。

$var = "let's count: ?, ?, ?";
$replace = array('1', '2', '3');
$needle = '?';

foreach($replace as $val) {
    $var[strpos($var, $needle)] = $val;
}

答案 2 :(得分:3)

由于strpos()将返回发生的第一个结果,您可以执行以下操作:

$var = "let's count: ?, ?, ?";
$index = 1;
while(strpos($var, '?'))
{
    $var[strpos($var, '?')] = $index;
    $index++;
}
echo $var;

答案 3 :(得分:2)

为什么你需要在上面的答案中使用 substr_count strpos ?您可以使用简单的for执行此任务。看看我的例子。) 这是性能最快的解决方案

$var = "let's count: ?, ?, ?";
$replace = array(1,2,3);

for($i=0, $r=0; $i< strlen($var); $i++){

$var[$i] = '?' === $var[$i] ? $replace[$r++] : $var[$i] ;

}

var_dump($var);

结果:

string(20) "let's count: 1, 2, 3" 

答案 4 :(得分:1)

$str = "lets count: ?, ?, ?";
$search = "/\?/";
$replace = array(1,2,3);

if( is_array($replace) ) {
  $search = array_fill(0, count($replace), $search);
}

echo preg_replace( $search, $replace, $str, 1);

//output: lets count: 1, 2, 3

答案 5 :(得分:0)

$var = "let's count: ?, ?, ?";
$cnt = substr_count($var, '?');

for ($i=1;$i<=$cnt;$i++)
    $var = substr_replace($var, $i, strpos($var, '?'), 1);

echo $var; //let's count: 1, 2, 3