No.370


【PHP】配列の整理に便利な関数

配列のデータ整形によく使うコマンド

  PHPでは配列の値をソートしたり、空データを弾きたいときに関数ひとつで行うことができる。

 結構レビューで指摘することが多いので、説明用にメモ。


array_map():配列の要素をメソッドで処理する

https://www.php.net/manual/ja/function.array-map.php

 'trim()'するなどの場合に便利。

$fuga = [
 0 => "1",
  1 => "  2  ",
  2 => "0",
  3 => "",
  4 => " "
];
$hoge = array_map('trim', $fuga);
var_export($hoge);
↓
[
  0 => "1",
  1 => "2",
  2 => "0",
  3 => "",
  4 => ""
]

 もちろんコールバック関数には無名関数も使える。


array_filter():配列の要素をフィルタリングする

https://www.php.net/manual/ja/function.array-filter.php

 コールバック関数を記載しないと配列の値でフィルタリングされる。
 (bool)値なので、0もしくは nullfalseになる`。よくトラブルの元になるので注意。

$fuga = [
 0 => "1",
  1 => "  2  ",
  2 => "0",
  3 => "",
  4 => " "
];
$hoge = array_filter($fuga);
var_export($hoge);
↓
[
  0 => "1",
  1 => "2",
  4 => " "
]

 空だけど意味ある値を除外したい場合はコールバック関数を定義してあげればよい。
 例えば0を除外する場合はstrlen()を使ってやる。

$fuga = [
 0 => "1",
  1 => "  2  ",
  2 => "0",
  3 => "",
  4 => " "
];
$hoge = array_filter($fuga, 'strlen');
var_export($hoge);
↓
[
  0 => "1",
  1 => "  2  ",
  2 => "0"
  4 => " "
]

 もちろんコールバック関数には無名関数も使える。


array_values():配列のキーを振り直す

https://www.php.net/manual/ja/function.array-values.php

 asort()などでソートした後にキーを振り直すためによく使う。

$fuga = [
  1 => "a",
  3 => "b",
  4 => "c"
];
$hoge = array_values($fuga);
var_export($hoge);
↓
[
  0 => "a",
  1 => "b",
  2 => "c"
]