こんにちは、おーしまです。
今回は、配列の中にnullがあるかもしれない状況で、配列の中身の「null」や「""」取り除き、配列をきれいにする方法について書きます。
「array_filter」を使います。
<?php $array = ["くるま", 1, "", true, false, 0]; $array = array_filter($array); print_r($array); ?> //実行結果 Array ( [0] => くるま [1] => 1 [3] => 1 )
「""」や「false」や「0」が配列から排除されました。(「true」は「1」として表示)
削除する内容はempty()で空とみなされるものが範囲です。("", null, [], 0, falseなど)
第2引数にcallback関数を指定することもできます。
<?php function deleteMatsuda($element) { return $element != "マツダ"; } $array = ["スバル", "トヨタ", "マツダ", "ホンダ", "日産"]; $array = array_filter($array, "deleteMatsuda"); print_r($array); ?> //実行結果 Array ( [0] => スバル [1] => トヨタ [3] => ホンダ [4] => 日産 )
このように関数でfalseが帰ると、配列の要素を削除するようになります。(マツダが嫌いなわけじゃないです。)
もっと実践的な形としては、
<?php $array = [ ['maker' => "スバル", 'car_name' => "インプレッサ", "suv_status" => 0], ['maker' => "トヨタ", 'car_name' => "ハリヤー", "suv_status" => 1], ['maker' => "マツダ", 'car_name' => "CX-5", "suv_status" => 1], ['maker' => "ホンダ", 'car_name' => "シビック", "suv_status" => 0], ['maker' => "日産", 'car_name' => "スカイライン", "suv_status" => 0], ]; $newArray = []; foreach($array as $element) { array_push($newArray, array_filter($element)); } print_r($newArray); ?> //実行結果 Array ( [0] => Array ( [maker] => スバル [car_name] => インプレッサ ) [1] => Array ( [maker] => トヨタ [car_name] => ハリヤー [suv_status] => 1 ) [2] => Array ( [maker] => マツダ [car_name] => CX-5 [suv_status] => 1 ) [3] => Array ( [maker] => ホンダ [car_name] => シビック ) [4] => Array ( [maker] => 日産 [car_name] => スカイライン ) )
foreachを用いて、連想配列の中からnullのものを排除することもできます。
今回はここまでです。
それでは、また。