PHP の配列操作では、配列内に null 値が頻繁に発生し、その後のデータ処理に影響を与えるため、null 値 (空の文字列、false、null など) をクリアする必要があります。配列内で負けます。この記事では、2次元配列の空配列をクリアする方法を紹介します。
PHP では、array_filter 関数を使用して配列内の空の値をクリアできます。この関数は 2 つのパラメータを受け取ることができます。最初のパラメータはフィルタリングされる配列を表し、2 番目のパラメータは使用されるコールバック関数を表します。コールバック関数は、フィルターで除外する値を指定できます。たとえば、空の文字列と false をフィルターで除外する場合は、次のようにコールバック関数を定義できます:
function my_callback($value){ return $value !== '' && $value !== false; }
ここで、$value は各要素を表します!== 演算を使用して配列を取得し、条件が満たされているかどうかを判断します。次に、array_filter 関数を使用して配列をフィルター処理します。
$arr = array('a', '', 'b', false, null); $new_arr = array_filter($arr, 'my_callback'); print_r($new_arr);
出力結果は次のとおりです。
Array ( [0] => a [2] => b )
ご覧のとおり、空の文字列と false がフィルターで除外されます。しかし、2 次元配列を扱う場合、状況は少し複雑になります。
次の 2 次元配列を考えてみましょう:
$arr = array( array('a', '', 'b'), array('c', false, null), array('', 'd', 'e') );
私たちの目標は、空の配列をクリアすることです。 array_filter 関数を使用すると、次の形式でフィルター条件を記述することができます。
function my_callback($row){ return array_filter($row, function($value){ return $value !== '' && $value !== false; }); }
$row は 2 次元配列の各行を表し、array_filter を使用して各行の要素をフィルターし、結果を返します。結果。
次に、array_map 関数を使用して、このコールバック関数を 2 次元配列の各行に適用できます:
$new_arr = array_map('my_callback', $arr); print_r($new_arr);
出力結果は次のとおりです:
Array ( [0] => Array ( [0] => a [2] => b ) [1] => Array ( [0] => c ) [2] => Array ( [1] => d [2] => e ) )
空の配列がクリアされていることがわかります。 array_map 関数を使用して返される結果は依然として 2 次元配列であり、各行には異なる数の要素が含まれる可能性があるため、array_values 関数を使用して配列のインデックスを再作成する必要がある場合があることに注意してください。
$new_arr = array_map('my_callback', $arr); $new_arr = array_map('array_values', $new_arr); print_r($new_arr);
出力結果は次のとおりです:
Array ( [0] => Array ( [0] => a [1] => b ) [1] => Array ( [0] => c ) [2] => Array ( [0] => d [1] => e ) )
配列のインデックスが再作成されたことがわかります。
要約すると、2 次元配列内の空の配列をクリアするには、array_filter 関数と array_map 関数を組み合わせることで実現できます。1 つは要素のフィルター処理用、もう 1 つはフィルターされた配列のインデックスの再作成用の 2 つのコールバック関数を作成する必要があります。 。この方法の利点はシンプルで理解しやすいことですが、欠点はコードが比較的長いことです。頻繁に配列操作を必要とするプログラムの場合は、より効率的なアルゴリズムの使用を検討することをお勧めします。
以上がPHPで2次元配列の空の配列をクリアする方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。