多次元連想配列で、値の無い配列を除外

作成日:

JSONファイルを作成するために、多次元連想配列を使用しているのですが、これが非常に数が多いので、一つ一つifで検証しつつ入れていくより、取り敢えず値があろうが無かろうが放り込んでおいて、最終的に値の無い箇所を除外していく方がコードを書くのが簡単かな、と思いまして。

コードは・・・これで大丈夫かな?

[php]function delete_empty_array( $array ) {
$result = array();
foreach ( $array as $key => $val ) {
if ( is_array( $val ) ) {
if ( is_numeric( $key ) ) {
$result[] = mx_delete_empty_array( $val );
} else {
$result[ $key ] = mx_delete_empty_array( $val );
}
} else {
if ( ! empty( $val ) ) {
if ( is_numeric( $key ) ) {
$result[] = $val;
} else {
$result[ $key ] = $val;
}
}
}
}
return $result;
}[/php]

配列の中にはキーを持たない配列もあるので、is_numeric( $key )で分岐してみました。

php array_filter 配列の空要素削除に使うのはダメ! https://tadtadya.com/php-do-not-use-array_filter-to-delete-empty-elements-of-array/

array_filter(), array_values()を使って、配列から空要素を削除する方法があります。よく使う方法ですが、絶対にやってはいけないことがあります。『コールバックのstrlen()』です。どうして?の人からそもそも知らない人まで、分かりやすいようにサンプルコードで説明します。

物草 灸太郎

WordPressでホームページを制作しつつ、休日は畑を耕したりDIYを楽しんでいます。

コメントをどうぞ

  • メールアドレスが公開されることはありません。
  • コメント欄にURLは入力できません。
  • このサイトはreCAPTCHAによって保護されており、Googleのプライバシーポリシー利用規約が適用されます。