PHP
 Computer >> コンピューター >  >> プログラミング >> PHP

PHPで配列からnull値を削除する方法【array_filter()の使い方】

PHPで配列からnull値を削除したい場合は、array_filter()関数を使用します。この関数は配列の各要素をフィルタリングし、条件に合わない値を自動的に取り除いてくれます。

array_filter()の基本動作

array_filter()は、コールバック関数を使って配列を絞り込む関数です。コールバックを省略した場合は、「falseと同等(falsy)」と判定されるすべての要素が削除されます。そのため、nullだけでなく、0、空文字列 ""false、空の配列なども同時に除去される点に注意しましょう。

まず、次のような連想配列を用意します。

$studentDetails = array("firstName" => "John", "lastName" => null);
echo "元の配列の内容:";
print_r($studentDetails);

この配列に対して array_filter() を適用します。

$result = array_filter($studentDetails);

完全なサンプルコード

<!DOCTYPE html>
<html>
<body>
<?php
    $studentDetails = array("firstName" => "John", "lastName" => null);
    echo "元の配列の内容:";
    print_r($studentDetails);
    $result = array_filter($studentDetails);
    echo "</br>";
    echo "nullを削除した後の結果:";
    print_r($result);
?>
</body>
</html>

実行結果

元の配列の内容:Array ( [firstName] => John [lastName] => )
nullを削除した後の結果:Array ( [firstName] => John )

実行結果を見ると、値が null だった「lastName」要素が配列から取り除かれ、「firstName」だけが残っていることが確認できます。

押さえておきたいポイント

  • array_filter()元のキーを保持します。連想配列でもキーはそのまま残るため、必要に応じて array_values() でキーを振り直すとよいでしょう。
  • コールバック省略時は、null 以外に 0 や空文字列なども削除されます。nullだけを除去したい場合は、次のようにコールバックを指定します。
$result = array_filter($studentDetails, function ($value) {
    return !is_null($value);
});

このように is_null() を組み合わせれば、数値の 0 や空文字列を残しながら、null のみを確実に削除することができます。用途に合わせて使い分けましょう。

  1. JavaScriptでテーブルにNULL値が挿入されるのを防ぐ方法

    テーブルにNULL値が挿入されるのを防ぐには、値を入力する際に条件チェックを行う必要があります。NULLをチェックする条件は以下のように記述します。while( !( yourVariableName1==null || yourVariableName2==null || yourVariableName3==null……N){ // yourStatement1 . . N }このロジックを使用することで、NULL値が挿入されることを確実に防ぐことができます。次に、forループを使ってNULL値なしでテーブルに値を挿入します。以下がそのコードです。サンプルコ

  2. PHPとMySQLでブール値を扱うには?BOOL・BOOLEAN・TINYINT(1)の違いと使い方

    本記事では、MySQL 8.0.12を使用して、ブール(Boolean)値の正しい取り扱い方を解説します。まず、使用しているMySQLのバージョンを確認しておきましょう。 mysql> select version(); +-----------+ | version() | +-----------+ | 8.0.12 | +-----------+ 1 row in set (0.00 sec) MySQLにおけるブール値の基本:BOOL・BOOLEAN・TINYINT(1) MySQLでブール値を扱うには、BOOL、BOOLEAN、またはTINYINT(1)のいずれかを使用