Php sprintf с массивом - программирование
Подтвердить что ты не робот

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));

заблаговременно

4b9b3361

Ответ 1

Используйте vsprintf вместо sprintf. Он принимает параметр массива, из которого он форматирует строку.

$content = vsprintf("some text %s another text %s extra text %s", $array);

Ответ 2

Альтернатива vsprintf в PHP 5.6 +

sprintf("some text %s another text %s extra text %s", ...$array);

Ответ 3

Здесь вы должны использовать 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

Ответ 4

$rv = array(1,2,3,4);
sprintf('[deepak] yay [%s]', print_r($rv, true))