ホームページ >バックエンド開発 >PHPの問題 >PHPで配列からnull値を削除する方法

PHPで配列からnull値を削除する方法

PHPz
PHPzオリジナル
2023-05-11 10:49:37534ブラウズ

PHP を開発するとき、配列を処理する必要があることがよくありますが、配列を処理するときは、配列をすっきりさせるために配列内の null 値を削除する必要があることがよくあります。

配列内の Null 値は配列の使用には影響しませんが、配列がわかりにくくなり、場合によってはプログラムに負担がかかります。したがって、PHP 関数を使用して配列を処理して null 値を削除する必要があります。

PHP には、配列内の null 値を削除するためのさまざまなメソッドが用意されています。最も一般的に使用されるメソッドは、関数 array_filter() を使用することです。以下にこの機能の使い方を詳しく紹介します。

  1. 基本的な使用法

array_filter() 関数は、配列内の不要な値をフィルタリングするために使用される PHP の関数です。この関数の基本的な構文は次のとおりです。

array array_filter (array $array [, callback $callback [, int $flag = 0 ]])

このうち、$array はフィルタリングされる配列を指し、$callback はオプションのパラメータで、適用されるコールバック関数を示します (指定されていない場合は、すべてfalse に等しい値は要素から削除されます)。 $flag は引き続きオプションのパラメータですが、PHP_ARRAY_FILTER_USE_BOTH に設定すると、値とキーの両方が空かどうかチェックされます。

以下の例を見てください:

<?php
   $arr = array("a", "b", "", "c", "", "d");
   print_r(array_filter($arr));
?>

出力結果:

Array
(
    [0] => a
    [1] => b
    [3] => c
    [5] => d
)

ここのコードでは、2 つの空の要素を含む配列 $arr を定義します。" ”, array_filter() 関数を使用して空の要素を除外した後は、空ではない要素 ([a, b, c, d]) のみが保持されます。

  1. 連想配列の処理

同時に、連想配列をフィルタリングすることもできます。フィルター関数は値に適用されるため、フィルター条件に一致するキーと値のペアのみが保持されます。

下の例を見てください:

<?php
   $arr = array(
      "a" => 1,
      "b" => 2,
      "c" => "",
      "d" => 3,
      "e" => "",
      "f" => 4
   );
   print_r(array_filter($arr));
?>

出力結果:

Array
(
    [a] => 1
    [b] => 2
    [d] => 3
    [f] => 4
)

ここでは、連想配列 $arr を定義します。フィルタリング後、値が次のキーのみが表示されることがわかります。は空ではありません (a、b、d、f)。

  1. カスタム コールバック関数を使用する

フィルター条件をカスタマイズする場合は、コールバック関数を使用して実現できます。コールバック関数は、配列内の 1 つの要素の値をパラメータとして受け取り、その値を保持するかどうかを示すブール値を返します。

以下の例を見てください:

<?php
   $arr = array("apple", "banana", "cherry", "donut", "elderberry");
   print_r(array_filter($arr, function($var) {
      return (strlen($var) > 4);
   }));
?>

出力結果:

Array
(
    [2] => cherry
    [3] => donut
    [4] => elderberry
)

ここでは、要素の長さに基づいて保持するかどうかを決定するコールバック関数を定義します。長さが 4 以下の要素をフィルターで除外し、最終出力は [cherry, donut, elseberry] になります。

  1. 多次元配列の場合

上で紹介した方法はすべて 1 次元配列に適用できます。多次元配列をフィルター処理したい場合は、どうすればよいですか?それ?

以下に示すように、再帰関数を使用して多次元配列を処理できます:

<?php
   $arr = array(
      0 => 'some data',
      1 => '',
      2 => array(
         0 => 'more data',
         1 => '',
         2 => array(
            0 => 'even more data',
            1 => '',
         ),
      ),
   );
   function removeEmptyValues(&$array) {
      foreach($array as $key => &$value) {
         if(is_array($value)) {
            removeEmptyValues($value);
            if(count($value) == 0) {
               unset($array[$key]);
            }
         }
         else if(empty($value)) {
            unset($array[$key]);
         }
      }
      unset($value);
   }
   removeEmptyValues($arr);
   print_r($arr);
?>

出力結果:

Array
(
    [0] => some data
    [2] => Array
        (
            [0] => more data
            [2] => Array
                (
                    [0] => even more data
                )
        )
)

ここでは、再帰関数removeEmptyValues()を定義します。多次元配列を走査して内部の要素を処理すると、null 値は自動的に削除されます。

概要

配列は PHP 開発では非常に一般的ですが、場合によっては配列に多数の null 値が含まれ、大量の記憶領域を占有し、プログラムのパフォーマンスに影響を与えることがあります。この場合、array_filter() 関数を使用して配列内の null 値を削除し、配列をよりクリーンかつ効率的にすることができます。多次元配列を扱う場合は、再帰関数を使用する必要があることに注意してください。

もちろん、これは単なる単純な解決策であり、すべての状況に適用できるわけではありません。もっと良い方法がある場合は、共有してください。

以上がPHPで配列からnull値を削除する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。