如何有条不紊地更换东西?例如:
$var = "let's count: ?, ?, ?";
现在我想将其替换为1,2,3,结果为"让我们计算1,2,3和#34;。我怎样才能做到这一点?我不能用"%s"并使用vsprintf()与数组,因为我想尊重整数和浮点数。但我想用数组来做。例如:
$var = replace( $var, "?", array(1, 2, 3) );
我该怎么办?我无从得到任何想法。
答案 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