Как отформатировать массив с помощью printf в php
Я знаю, что оператор printf
в PHP может форматировать строки следующим образом:
//my variable
$car = "BMW X6";
printf("I drive a %s",$car); // prints I drive a BMW X6,
Однако, когда я пытаюсь распечатать массив с помощью printf
, похоже, нет способа его отформатировать. Кто-нибудь может помочь?
5 answers
Вот выдержка из одного из комментариев к 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
Вы не можете "распечатать" массив просто так, вам придется перебирать его с помощью 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
Вы ищете что-то подобное, используя print_r с параметром true:
printf("My array is:***\n%s***\n", print_r($arr, true));
Да
Разместите в своем html-файле следующее:
<pre>
<?php
print_r ($your_array);
?>
</pre>
Или в вашем коде только место:
print_r ($your_array);
Printf не обрабатывает массив рекурсивно. Однако вы можете сделать:
$cars=array('Saab','Volvo','Koenigsegg');
print_r($cars);