PHPで完全に理解する!「in_array」関数の使い方と10個の活用例

PHPのin_array関数の詳しい解説と実用的なサンプルコードPHP
この記事は約12分で読めます。

 

【サイト内のコードはご自由に個人利用・商用利用いただけます】

この記事では、プログラムの基礎知識を前提に話を進めています。

説明のためのコードや、サンプルコードもありますので、もちろん初心者でも理解できるように表現してあります。

基本的な知識があればカスタムコードを使って機能追加、目的を達成できるように作ってあります。

※この記事は、一般的にプロフェッショナルの指標とされる『実務経験10,000時間以上』を凌駕する現役のプログラマチームによって監修されています。

サイト内のコードを共有する場合は、参照元として引用して下さいますと幸いです

※Japanシーモアは、常に解説内容のわかりやすさや記事の品質に注力しております。不具合、分かりにくい説明や不適切な表現、動かないコードなど気になることがございましたら、記事の品質向上の為にお問い合わせフォームにてご共有いただけますと幸いです。
(送信された情報は、プライバシーポリシーのもと、厳正に取扱い、処分させていただきます。)

はじめに

PHPの「in_array」関数をどうやって使えばいいのか、またどのように活用すればより効率的になるのかをご存知ですか?それが今回のテーマです。

この記事を読むことで、「in_array」関数の基本的な使い方から、より具体的で実践的な活用例までが身につきます。

そして、それぞれの活用例には詳細なサンプルコードを付けていますので、ご自身で試してみることも可能です。

さあ、一緒に学びましょう!

●PHPの「in_array」関数とは

PHPには便利な配列操作の関数がたくさんありますが、その中でも「in_array」は特によく使われる関数の一つです。

この関数は、ある値が配列内に存在するかどうかを調べるために使用します。

存在する場合はtrueを、存在しない場合はfalseを返すという非常にシンプルな関数です。

○基本的な使用方法

基本的な使い方はとても簡単です。

まずは「in_array」関数についての基本的な構文から見ていきましょう。

in_array(検索する値, 検索対象の配列);

ここで、検索する値には検索したい値を指定し、検索対象の配列には検索を行う配列を指定します。

これだけで検索する値が配列内に存在するかどうかを調べることができます。

●「in_array」の詳細な使い方

ここからは、それぞれの使い方について詳しく説明していきます。

例として、簡単なサンプルコードもご紹介します。

○サンプルコード1:基本的な「in_array」の使い方

まずは、基本的な「in_array」の使い方を見てみましょう。

下記のコードでは、配列に特定の値が含まれているかどうかを確認しています。

<?php
$fruits = ["apple", "banana", "cherry", "orange", "melon"];

if (in_array("banana", $fruits)) {
    echo "バナナが含まれています。";
} else {
    echo "バナナが含まれていません。";
}
?>

このコードでは、$fruitsという配列の中に”banana”という値が存在するかどうかを調べています。

存在する場合には”バナナが含まれています。”と表示し、存在しない場合には”バナナが含まれていません。”と表示します。

上記のコードを実行すると、配列$fruitsの中に”banana”が含まれているため、”バナナが含まれています。”と表示されます。

○サンプルコード2:「in_array」で厳密な型チェックを行う

「in_array」関数は、第3引数にtrueを設定することで、検索する値の型まで厳密にチェックすることができます。

この機能は、文字列の数字と整数の数字を区別したいときなどに便利です。

下記のコードでは、「in_array」関数で厳密な型チェックを行っています。

<?php
$numbers = [1, 2, "3", 4, "5"];

if (in_array("3", $numbers, true)) {
    echo "文字列の3が含まれています。";
} else {
    echo "文字列の3が含まれていません。";
}
?>

このコードでは、$numbersという配列の中に”3″という文字列が存在するかどうかを調べています。

存在する場合には”文字列の3が含まれています。”と表示し、存在しない場合には”文字列の3が含まれていません。”と表示します。

上記のコードを実行すると、配列$numbersの中に”3″が含まれているため、”文字列の3が含まれています。”と表示されます。

●「in_array」関数の詳細な対処法

ここでは、「in_array」関数を使う上で注意するべきポイントと、その対処法について解説します。

○サンプルコード3:「in_array」の戻り値を確認する

「in_array」関数の戻り値はブール値(真偽値)ですが、これを直接出力すると、trueは1として、falseは何も出力されないという特性があります。

そのため、明示的にブール値を文字列として出力するためには、var_dump関数を使用すると便利です。

<?php
$fruits = ["apple", "banana", "cherry", "orange", "melon"];

$result = in_array("banana", $fruits);
var_dump($result);
?>

このコードでは、”banana”が$fruits配列に存在するかどうかをチェックし、その結果を$result変数に格納しています。

その後、var_dump関数を使って$resultの内容を出力します。

上記のコードを実行すると、”banana”が$fruits配列に存在するため、”bool(true)”と表示されます。

これは、in_array関数がtrueを返したことを示しています。

●「in_array」関数の詳細な注意点

「in_array」関数は、基本的に配列の値を順番に調べていきますが、それが大きな配列の場合、処理速度が遅くなる可能性があります。

そのため、大きな配列で特定の値の存在を高速にチェックするには、配列のキーを活用した方法を検討すると良いでしょう。

○サンプルコード4:配列内に特定の値が存在するか確認する

下記のコードでは、配列のキーを活用して特定の値が存在するかを高速にチェックしています。

<?php
$fruits = ["apple" => true, "banana" => true, "cherry" => true, "orange" => true, "melon" => true];

if (isset($fruits["banana"])) {
    echo "バナナが含まれています。";
} else {
    echo "バナナが含まれていません。";
}
?>

このコードでは、$fruitsという配列のキーに果物の名前を設定し、値にtrueを設定しています。

そして、isset関数を使って”banana”というキーが存在するかどうかをチェックしています。

存在する場合には”バナナが含まれています。”と表示し、存在しない場合には”バナナが含まれていません。”と表示します。

上記のコードを実行すると、キー”banana”が存在するため、”バナナが含まれています。”と表示されます。

この方法なら、配列のサイズが大きくても高速に特定の値の存在をチェックできます。

●「in_array」関数の詳細なカスタマイズ

「in_array」関数は、PHPの便利な機能の一つで、配列内に特定の値が存在するかを調べることができます。

その基本的な使い方を理解した上で、更にその応用方法について学んでいきましょう。

○サンプルコード5:「in_array」を用いたデータの検索

下記のコードでは、「in_array」関数を用いて配列から特定のデータを検索しています。

<?php
$fruits = ["apple", "banana", "cherry", "orange", "melon"];
$search = "cherry";

if (in_array($search, $fruits)) {
    echo $search . "が見つかりました。";
} else {
    echo $search . "は見つかりませんでした。";
}
?>

このコードでは、$fruitsという配列の中に$searchに格納された値が存在するかを調べています。

存在する場合には”cherryが見つかりました。”と表示し、存在しない場合には”cherryは見つかりませんでした。”と表示します。

上記のコードを実行すると、$fruits配列の中に”cherry”が存在するため、”cherryが見つかりました。”と表示されます。

○サンプルコード6:「in_array」を用いた値の比較

下記のコードでは、「in_array」関数を用いて配列に含まれる値を他の配列の値と比較しています。

<?php
$fruits1 = ["apple", "banana", "cherry", "orange", "melon"];
$fruits2 = ["banana", "kiwi", "cherry", "grape", "melon"];

foreach ($fruits1 as $fruit) {
    if (in_array($fruit, $fruits2)) {
        echo $fruit . "は両方の配列に存在します。\n";
    } else {
        echo $fruit . "はfruits1のみに存在します。\n";
    }
}
?>

このコードでは、$fruits1の各要素について、その要素が$fruits2にも存在するかを調べています。

存在する場合には”fruitは両方の配列に存在します。”と表示し、存在しない場合には”fruitはfruits1のみに存在します。”と表示します。

上記のコードを実行すると、各果物がどちらの配列に存在するかが表示されます。

●「in_array」の応用例

「in_array」関数は、上記のような基本的な配列の操作だけでなく、もっと複雑なケースにも対応することができます。

次に、その応用例について見ていきましょう。

○サンプルコード7:「in_array」を用いたユーザー認証の実装

ユーザー認証はウェブサイトの重要な機能の一つで、「in_array」関数を用いてシンプルに実装することができます。

<?php
$users = ["user1", "user2", "user3", "user4", "user5"];
$input = "user3";

if (in_array($input, $users)) {
    echo $input . "は認証されました。\n";
} else {
    echo $input . "は認証できませんでした。ユーザー名をご確認ください。\n";
}
?>

このコードでは、$usersという配列に登録されたユーザー名が$inputに入力されたユーザー名と一致するかを調べています。

一致する場合には”user3は認証されました。”と表示し、一致しない場合には”user3は認証できませんでした。ユーザー名をご確認ください。”と表示します。

上記のコードを実行すると、$users配列の中に”user3″が存在するため、”user3は認証されました。”と表示されます。

○サンプルコード8:「in_array」を用いたデータのフィルタリング

「in_array」関数は、不要なデータを配列から除外するフィルタリング作業にも活用できます。

下記のコードでは、「in_array」関数を用いて特定のデータをフィルタリングしています。

<?php
$data = [1, 2, 3, 4, 5, 6, 7, 8, 9];
$exclude = [2, 4, 6, 8];

$filtered_data = array_filter($data, function ($value) use ($exclude) {
    return !in_array($value, $exclude);
});

print_r($filtered_data);
?>

このコードでは、$exclude配列に指定した値を$data配列から除外しています。

結果として、偶数を除外した新たな配列が$filtered_dataに格納されます。

上記のコードを実行すると、配列$dataから$excludeに含まれる値(2, 4, 6, 8)を除いた配列が出力されます。

○サンプルコード9:「in_array」を用いた値の検証

下記のコードでは、「in_array」関数を用いて入力値が有効なものかを検証しています。

具体的には、入力値が指定されたリストの中に含まれているかを調べています。

<?php
$valid_values = ["

apple", "banana", "cherry", "date"];
$input = "apple";

if (in_array($input, $valid_values)) {
    echo $input . "は有効な入力値です。\n";
} else {
    echo $input . "は無効な入力値です。リストから選んでください。\n";
}
?>

このコードでは、$valid_valuesという配列に入力値($input)が含まれているかどうかを「in_array」関数で調べ、含まれていれば”appleは有効な入力値です。”と表示し、含まれていなければ”appleは無効な入力値です。リストから選んでください。”と表示します。

上記のコードを実行すると、”appleは有効な入力値です。”と表示されます。

なぜなら、入力値($input)は$valid_values配列に含まれているからです。

○サンプルコード10:「in_array」を用いた多次元配列の検索

「in_array」関数は多次元配列にも適用できます。

しかし、そのままでは配列の中の配列を検索することはできません。

そこで、次のようにarray_column関数と組み合わせることで、多次元配列の特定の列に対する検索が可能になります。

<?php
$users = [
    ["name" => "Taro", "email" => "taro@example.com"],
    ["name" => "Jiro", "email" => "jiro@example.com"],
    ["name" => "Saburo", "email" => "saburo@example.com"]
];
$search = "jiro@example.com";

$email_list = array_column($users, 'email');

if (in_array($search, $email_list)) {
    echo $search . "は存在します。\n";
} else {
    echo $search . "は存在しません。\n";
}
?>

このコードでは、array_column関数を用いて$usersの’email’の列を取得し、それが$email_listという配列に格納されます。

そして、「in_array」関数を用いて、$email_listの中に$searchの値が存在するかどうかを調べます。

上記のコードを実行すると、”jiro@example.comは存在します。”と表示されます。

なぜなら、$searchに指定した”jiro@example.com”は$email_listに含まれているからです。

まとめ

以上がPHPの「in_array」関数の詳細な説明と具体的な使い方、活用例になります。

この関数を使うことで、配列に対する様々な操作を簡単に、そして効率的に行うことが可能になります。

ユーザー認証の実装、データのフィルタリング、値の検証、多次元配列の検索といった、幅広い場面での活用が期待できます。

是非この知識を元に、日々のプログラミング作業をさらにスムーズに進めていきましょう。