PHP を開発するとき、配列を処理する必要があることがよくありますが、配列を処理するときは、配列をすっきりさせるために配列内の null 値を削除する必要があることがよくあります。
配列内の Null 値は配列の使用には影響しませんが、配列がわかりにくくなり、場合によってはプログラムに負担がかかります。したがって、PHP 関数を使用して配列を処理して null 値を削除する必要があります。
PHP には、配列内の null 値を削除するためのさまざまなメソッドが用意されています。最も一般的に使用されるメソッドは、関数 array_filter() を使用することです。以下にこの機能の使い方を詳しく紹介します。
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]) のみが保持されます。
同時に、連想配列をフィルタリングすることもできます。フィルター関数は値に適用されるため、フィルター条件に一致するキーと値のペアのみが保持されます。
下の例を見てください:
<?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 つの要素の値をパラメータとして受け取り、その値を保持するかどうかを示すブール値を返します。
以下の例を見てください:
<?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 次元配列に適用できます。多次元配列をフィルター処理したい場合は、どうすればよいですか?それ?
以下に示すように、再帰関数を使用して多次元配列を処理できます:
<?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 サイトの他の関連記事を参照してください。