MW211 EXIT

devlog
PHP配列/特定の列の調査
2014年04月08日
下記のようなSQL文で取得した複数行データのような多次元連想配列があったとして。
┌──────────────────────────────────────┐
│$多次元連想配列 = array(                                                    │
│    array(                                                                  │
│        キー   => 値,                                                       │
│        データ => 値,                                                       │
│    ),                                                                      │
│    array(                                                                  │
│        キー   => 値,                                                       │
│        データ => 値,                                                       │
│    ),                                                                      │
│);                                                                          │
└──────────────────────────────────────┘

列を縦に切り出して配列化するのは「array_column()」を使う。
┌──────────────────────────────────────┐
│キーの配列 = array_column($多次元連想配列, キー);                           │
└──────────────────────────────────────┘

これを使って、特定の列の最大値を求めることもできる。
┌──────────────────────────────────────┐
│列の最大値 = max(array_column($多次元連想配列, 列));                        │
└──────────────────────────────────────┘

といっても、「array_column()」を使えるのは「PHP5.5以降」でのこと。

「mb_strwidth()」を駆使すれば、列の最大幅を調査することもできる。
┌──────────────────────────────────────┐
│列の最大幅 = max(array_map(function($value) {return mb_strwidth($value);},  │
│                           array_column($多次元連想配列, 列)));             │
└──────────────────────────────────────┘
但し、「mb_strwidth()」にはややこしい問題があるので注意
#UTF-8では「①」が半角扱いになるなど
分類:PHP配列