php sprintf с массивом
у меня есть заполнители строки соответствия ведьмы массива следующим образом:
"some text %s another text %s extra text %s"
и массива:
$array[0] match the first %s
$array[1] match the second %s
$array[2] match the third %s
Я думал, что это можно сделать с помощью функции sprintf следующим образом:
$content = sprintf("some text %s another text %s extra text %s", $array);
но это возвращает слишком мало аргументов ошибки, я попытался использовать implode:
$content = sprintf("some text %s another text %s extra text %s", implode(",",$array));
спасибо заранее
4 ответов
использовать vsprintf
вместо sprintf
. Он принимает параметр array, из которого он форматирует строку.
$content = vsprintf("some text %s another text %s extra text %s", $array);
здесь вы должны использовать vsprintf()
вместо sprintf()
.
sprintf()
принимает в качестве аргумента только простые переменные. Но вы пытаетесь передать массив в качестве аргумента.
для этого нужно vsprintf()
, который принимает массив в качестве аргумента.
например в вашем случае:
"some text %s another text %s extra text %s"
и массива:
$array[0] match the first %s
$array[1] match the second %s
$array[2] match the third %s
чтобы достичь того, чего вы хотите, вы должны сделать следующее:
$output = vsprintf("some text %s another text %s extra text %s",$array);
echo $output;
выход:
some text match the first another text match the second extra text match the third