2012-01-19 45 views
2

阵列格式化了与printf的我知道在PHP中printf语句格式字符串如下:如何在PHP

//my variable 
$car = "BMW X6"; 

printf("I drive a %s",$car); // prints I drive a BMW X6, 

然而,当我尝试使用printf打印一个数组,似乎没有要一种格式化的方法。谁能帮忙?

+1

您希望在阵列上发生什么样的格式化?与print_r数组相似的东西类似吗? –

+0

希望如果我有一个数组,如// $ my_array(3,2,1),我可以使用printf()如下// printf(“Ready!%s,%s,%s Go!”,$ my_array)输出//就绪! 3,2,1,去吧! –

+0

不,你不能那样做......相信我,你也不会那么想。你是初学者,在几年内与我们交谈,你会发现这不是一种选择。 :D – workdreamer

回答

5

下面是一个评论对http://php.net/manual/en/function.printf.php的摘录:

[编者注:或者只是使用vprintf ...]

如果你想要做的事,如:

// this doesn't work 
printf('There is a difference between %s and %s', array('good', 'evil')); 

而不是

printf('There is a difference between %s and %s', 'good', 'evil'); 

您可以使用此功能:

function printf_array($format, $arr) 
{ 
    return call_user_func_array('printf', array_merge((array)$format, $arr)); 
} 

使用它的方式如下:

$goodevil = array('good', 'evil'); 
printf_array('There is a difference between %s and %s', $goodevil); 

它会打印:

There is a difference between good and evil 
+0

为什么定义你自己的http://php.net/manual/de /function.vsprintf.php ?? ;) –

0

在HTML的地方是:

<pre> 
    <?php 
    print_r ($your_array); 
    ?> 
</pre> 

或您的代码唯一的地方:

print_r ($your_array); 
0

的printf不递归处理数组。然而,你可以这样做:

$cars=array('Saab','Volvo','Koenigsegg'); 
print_r($cars); 
3

你不能“打印”一个数组就是这样,你必须使用foreach,那么你可以printf的所有你想要的值来遍历它。例如:

$cars = array('BMW X6', 'Audi A4', 'Dodge Ram Van'); 
foreach($cars as $car) { 
    printf("I drive a %s", $car); 
} 

这将输出:

I drive a BMW X6

I drive a Audi A4

I drive a Dodge Ram Van

+0

这也是一个很好的解决方案。 – workdreamer

+0

这确实是最主题和最不复杂的一个。 – mensch