おーしまブログ

プログラミングやってます

【PHP】配列の中身でnullのものを排除する

こんにちは、おーしまです。

今回は、配列の中に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のものを排除することもできます。


今回はここまでです。
それでは、また。

ここはどこ おれはだれ それに近いものがあんだよ 始めようとした奴らも迷い始めてる 怖がらせないでよ そりゃ甘くはないけど まだまだ 夢見ていい世界なんでしょ {UVERwould「ハイ!問題作」}