PHP では、配列内の null 値をどのように削除するかがよく質問されます。ユーザーが入力したフォーム データに null 値が含まれる場合があるため、この問題は特に Web アプリケーションに当てはまります。この記事では、さまざまな方法を使用して PHP 配列から null 値を削除する方法を説明し、各方法の長所と短所を示します。
方法 1: array_filter 関数を使用する
PHP の組み込み関数 array_filter を使用すると、配列内の要素をフィルターし、null 以外の値のみを保持するなどのフィルター条件を定義できます。 。簡単なコード例を次に示します:
$arr = array('a', 'b', null, 'c', '', 'd'); $arr = array_filter($arr); print_r($arr);
出力は次のようになります:
Array ( [0] => a [1] => b [3] => c [5] => d )
array_filter この関数の利点は、非常に簡潔で理解しやすく、問題を迅速に解決できることです。ただし、フィルタリングされた値のインデックスが変更される可能性があるという欠点があります。
方法 2: foreach ループを使用する
もう 1 つの一般的な方法は、foreach ループを使用して配列全体をループし、反復ごとに各値を確認することです。要素が空の場合は、PHP の unset 関数を使用して削除します。
次はサンプル コードです:
$arr = array('a', 'b', null, 'c', '', 'd'); foreach ($arr as $key => $value) { if (empty($value)) { unset($arr[$key]); } } print_r($arr);
出力は次のとおりです:
Array ( [0] => a [1] => b [3] => c [5] => d )
このメソッドの利点は、要素のインデックスを変更しないことです。キー名要素ごとに削除されます。欠点は、unset 関数を使用する必要があり、コードが比較的複雑であることです。
方法 3: array_diff 関数を使用する
もう 1 つの比較的簡単な方法は、PHP で配列差分関数 array_diff を使用することです。 array_diff を 2 つの同一の配列で使用できます。1 つはすべての値を含み、もう 1 つは null 値を含みます。これにより、null 以外の値の差が返されます。
次はサンプル コードです:
$arr = array('a', 'b', null, 'c', '', 'd'); $arr2 = array(''); $arr = array_diff($arr, $arr2); print_r($arr);
出力は次のとおりです:
Array ( [0] => a [1] => b [3] => c [5] => d )
この方法の利点は、シンプルで明確であり、必要がないことです。ループと unset 関数の使用。欠点は、null 値の配列が大きすぎる場合、パフォーマンスに影響を与える可能性があることです。
方法 4: カスタム関数を使用する
最後の方法は、自分で作成した関数を使用して配列を走査し、Null 値を削除することです。このメソッドを使用したサンプル コードを次に示します。
function removeEmpty($arr) { foreach ($arr as $key => $value) { if (is_array($value)) { $arr[$key] = removeEmpty($value); } else { if(empty($value)) { unset($arr[$key]); } } } return $arr; } $arr = array('a', 'b', null, 'c', '', 'd'); $arr = removeEmpty($arr); print_r($arr);
出力は次のとおりです。
Array ( [0] => a [1] => b [3] => c [5] => d )
このメソッドの利点は、多次元配列を処理できることと、フィルター関数を次のように使用できることです。完全にカスタマイズされました。ただし、単純な組み込み関数ほど直感的で理解しにくいという欠点があります。
結論
PHP では、配列から null 値を削除する方法がたくさんあります。さまざまな方法には、それぞれ独自の長所と短所があります。 array_filter 関数は最も簡単な方法ですが、配列のインデックスを変更します。 foreach ループを使用してすべての要素をチェックし、それらを削除するには、比較的複雑なコードが必要です。 array_diff 関数はパフォーマンスに影響を与える可能性がありますが、カスタム関数は多次元配列を処理できますが、それに応じてより多くのコードが必要になります。最終的には、アプリケーションのシナリオに基づいて最も適切な方法を選択できます。
以上がPHPで配列からnull値を削除するにはどうすればよいですか? 4つの方法を紹介の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。