Правильное оправдание с printf - PullRequest
4 голосов
/ 12 сентября 2011

У меня есть словарь, в котором ключи и значения являются строками. Я хотел бы напечатать каждую пару ключ-значение в отдельной строке с выравниванием по левому краю и выравниванием по правому краю.

Key1        Test
Key2    BlahBlah

Etc ...

Какой лучший способ сделать это в PHP? Возможно, умный способ сделать с printf?

1 Ответ

8 голосов
/ 12 сентября 2011

Попробуйте это:

printf("%-40s", "Test");

40 сообщает printf заполнить строку так, чтобы она заняла 40 символов (это спецификатор заполнения). - указывает пэду справа (это спецификатор выравнивания).

См. Документацию спецификации преобразования .

Итак, чтобы напечатать весь массив:

$max_key_length = max(array_map('strlen', array_keys($array)));
$max_value_length = max(array_map('strlen', $array));

foreach($array as $key => $value) {
    printf("%-{$max_key_length}s   %{$max_value_length}s\n", $key, $value);
}

Попробуйте здесь: http://codepad.org/ZVDk52ad

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...