PHP はサーバーサイドでよく使われる言語であり、コンソールやログに文字列のみで様々なものを表現する時がしばしばあります。そういった時には後に解析のしやすい JSON 等の構造化された文字列を残すか、人間が視認しやすい文字列を残すかのどちらかになります。この記事では視認性の良い文字列を作る際によく使う中央揃え、縦揃えの例を紹介します。
中央揃えの例は次です。
<?php
// 一行の文字数
$LINE_LENGTH = 40;
// 中央ぞろえの例
$msg = [];
$msg[] = 'abcdefg';
$msg[] = '123456789';
$msg[] = 'ABC';
echo implode(
"\n",
// 各行のメッセージに str_pad の両端パディングをかけると中央ぞろえになります
array_map(static fn($str) => str_pad($str, $LINE_LENGTH, '-', STR_PAD_BOTH), $msg)
);
各行の文字列を配列にまとめ、それを両端からのパディングにかけていきます。PHP の両端パディングはいい感じに文字列を中央に収めてくれます。出力結果は次です。
----------------abcdefg----------------- ---------------123456789---------------- ------------------ABC-------------------
縦揃えも同様に str_pad が有効です。次の様にパディング長を取得して、それを使ってまとめて表示します。
// 表っぽい縦揃えの例
$msg = [];
$msg[] = ['lower', 'abcdefg'];
$msg[] = ['numeric', '123456789'];
$msg[] = ['UPPER','ABC'];
// パディングで埋めるときれいに揃う部分を抜き出し、パディングサイズを得ます。
// 左側だけ抜き出し
$leftMsgList = array_column($msg, 0);
// 左側の文字列長を取得し、その中から最大長を得る
$maxLen = max(array_map(static fn($str) => strlen($str), $leftMsgList));
echo implode(
"\n",
// 各行のメッセージの左側に得られた最大長のパディングをつけ、それを並べると縦が揃った表の様になり見栄えがよくなります。
array_map(static fn($pair) => str_pad($pair[0], $maxLen, ' ', STR_PAD_LEFT).' : '.$pair[1], $msg)
);
この実行結果は次で、左右のペアが分かりやすく、縦も揃って見栄えの良い文字列が得られます。
lower : abcdefg numeric : 123456789 UPPER : ABC
こんな感じで見やすい表示方法を使うとコンソールやログがみやすくなり、後の調査や運用が快適になります。