Как отформатировать массив с помощью printf в php - PullRequest
2 голосов
/ 19 января 2012

Я знаю, что оператор printf в PHP может форматировать строки следующим образом:

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

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

Однако, когда я пытаюсь напечатать массив, используя printf, кажется, нет способа отформатировать его. Кто-нибудь может помочь?

Ответы [ 5 ]

6 голосов
/ 19 января 2012

Вот выдержка из одного из комментариев 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
3 голосов
/ 19 января 2012

Вы ищете что-то подобное, используя print_r с истинным параметром :

printf("My array is:***\n%s***\n", print_r($arr, true));
3 голосов
/ 19 января 2012

Вы не можете «напечатать» массив просто так, вам придется перебирать его, используя foreach, тогда вы можете печатать все, что вы хотите, со значениями. Например:

$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 голосов
/ 19 января 2012

printf не обрабатывает массив рекурсивно.Однако вы можете сделать:

$cars=array('Saab','Volvo','Koenigsegg');
print_r($cars);
0 голосов
/ 19 января 2012

да

в своем html месте это:

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

или только в вашем коде:

 print_r ($your_array);
...