在PHP中如何使用printf格式化数组输出

3

我知道在PHP中printf语句可以按照以下方式格式化字符串:

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

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

然而,当我尝试使用printf打印数组时,似乎没有一种格式化的方法。有人可以帮忙吗?


1
你期望在一个数组上发生什么样的格式化?类似于 print_r 函数打印数组时发生的格式化吗? - user142162
希望如果我有一个数组,比如//$my_array(3,2,1),我可以使用printf()函数如下://printf("Ready! %s,%s,%s Go!",$my_array)来输出// Ready! 3,2,1, Go! - Destiny Makuyana
不,你不能这样做...相信我,你也不想这样做。你是个初学者,在几年后再和我们谈,你会看到这不是一个选项的:D - workdreamer
1
vprintf() - salathe
请参考以下链接:https://dev59.com/jG025IYBdhLWcg3w9quQ - dreftymac
有一个 PHP 函数可以做到这一点。 - Hisham Dalal
5个回答

9
以下是从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

6

4
你不能直接“打印”一个数组,你需要使用foreach遍历它,然后使用值printf。例如:
$cars = array('BMW X6', 'Audi A4', 'Dodge Ram Van');
foreach($cars as $car) {
    printf("I drive a %s", $car);
}

这将输出:

我开BMW X6

我开Audi A4

我开Dodge Ram Van


这确实是最相关且最不复杂的一个。 - mensch

0

是的

在你的HTML上放置这个:

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

或者仅在你的代码位置:

 print_r ($your_array);

0

printf不能递归处理数组。但是你可以这样做:

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

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接