PHP: vprintf - Manual

downloads | documentation | faq | getting help | mailing lists | reporting bugs | php.net sites | links | conferences | my php.net

search for in the

vsprintf vfprintf

Last updated: Fri, 26 Jan 2007

view this page in

# vprintf

(PHP 4 >= 4.1.0, PHP 5)

vprintf -- Выводит отформатированную строку

## Описание

int vprintf ( string format, array args )

Выводит значения массива `args`, отформатированные в соответствии с аргументом `format`, описанном в документации функции sprintf().

Эта функция подобна printf(), но она принимает не переменное число аргументов, а массив.

Возвращает длину выведенной строки

См. также описания функций printf(), sprintf() и vsprintf()

add a note User Contributed Notes
vprintf
soylent at soylentgreens dot com
10-Dec-2006 01:49
`I wanted to achieve (something like) this:
<?
$format = "A %s %s %s.\n";
$array1 = Array("monkey", "cow", "rooster");
$array2 = Array("eats", "goes", "crows");
$array3 = Array("bananas", "moo", "in the morning");
printf($format, $array1, $array2, $array3);
?>
Output:
A monkey eats bananas.
A cow goes moo.
A rooster crows in the morning.
but I couldn't find any php function to put in for printf that would work (vprintf comes close). So I created this little function (and used it to create a select box):
<?
/*
printf_arrays( string format, [array args[, array ...]] )
*/
function printf_arrays($format) {
$args = func_get_args();
array_shift($args); // get rid of format
for($i=0; $i<count($args[0]); $i++) {
$pfargs = Array();
foreach($args as $arr) $pfargs[] = (is_array($arr) && $arr[$i]) ? $arr[$i] : '';
vprintf($format, $pfargs);
}
}
$months = Array(
'01'=>'Jan',
'02'=>'Feb',
/* etc. */
);
?>
<select name="month">
<? printf_arrays('<option value="%s">%s</option>', array_keys($months), array_values($months)) ?>
</select>
Anyone else have any better ideas? Is there a built-in php function I missed that does this already?`
caleb at tekhawk dot com
29-Nov-2006 02:19
`i know that you can use %1$s or %3$s to select the first or third string but how can you or can you use array names to select it
something like %'user'$s $'email'$s
i tend to add things to my databases over time and this could save loads of recoding`
WebMaestro (asiby at hotmail dot com)
13-Mar-2005 12:40
`<?php
$fruits = array(1, 'banana',1, 'apples', 3, 'oranges', 2, 'peaches');
vprintf("I have %d %s, %d %s, %d %s and %d %s.", $fruits);
?>
Output:
I have 1 banana, 1 apples, 3 oranges and 2 peaches.`
add a note
vsprintf vfprintf

Last updated: Fri, 26 Jan 2007
show source | credits | stats | sitemap | contact | advertising | mirror sites
Copyright © 2001-2007 The PHP Group
All rights reserved.
This mirror generously provided by: Yahoo! Inc.
Last updated: Sat Mar 10 10:36:09 2007 PST