LoginSignup
7
5

More than 5 years have passed since last update.

【PHP】配列に値が存在するか調べるarray_search()関数。「!==」がポイント

Last updated at Posted at 2018-05-15

配列から特定のキーワードを検索した〜〜い!→array_search()を使おう

array_search()関数は、指定した値が存在した場合、最初に見つけた要素の添字を返します。存在しなかった場合は、falseを返します。

ただし、if文でarray_search()関数を使用する場合には、注意しなければいけないことがあります。それは、要素の添字が0の場合(配列の最初の要素の場合)、if文では「0」はfalseを返すので、正しい結果を得られることができません。そこで、以下のように書きます。

$data配列の中から$keywordキーワードを検索したい場合、!==を使用して以下のようなif文を書きます。

$data = array('aaa','bbb','ccc','ddd','eee','fff','ggg');
$keyword = 'ddd';
$index = array_search($keyword,$data);
if ($index !== false) {
    echo $index;
} else {
    echo "false";
}

「とりま、array_search()関数でif文を使うときは、こういう書き方をする」ってテンプレ化すれば良いでしょう。

以下コード全文です。参考文献は「PHP逆引きレシピ」です。

search_array.php

<!DOCTYPE html>
<html lang="ja">
<head>
    <meta charset="UTF-8">
    <title>配列に値があるか調べる(array_search)</title>
    <meta name="viewport" content="width=device-width, user-scalable=no, initial-scale=1.0, maximum-scale=1.0, minimum-scale=1.0">
</head>
<body>
<?php 

// まずは任意の配列を定義
$data = array('aaa','bbb','ccc','ddd','eee','fff','ggg');
// 検索したいキーワードを定義しておく
$keyword = 'ddd';

echo "<p>配列:";
// まずは配列の中身を普通に書き出してみる
print_r($data);
echo "</p>";
// 配列を検索してみる
// 出力結果「検索する値:ddd」
echo "<p>検索する値:".$keyword."</p>";
echo "<ul>";
echo "<li>in_array関数の結果";
// 配列の中にまずはキーワードが含まれているかどうか調べる
// ->in_array()関数
// $dataの中に$keywordがあったらtrue
if (in_array($keyword,$data)) {
    echo "true";
} else {
    echo "false";

}
echo "</li>";

echo "<li>array_search()関数の結果:";
// array_search()->指定した値が存在した場合、最初に見つけた要素の添字を返す。存在しなかった場合にはfalseを返す。
// 「最初に見つけた要素の添字」->配列の最初の添字は0.
// if文では、0はfalseと同義とみなされてしまう。
$index = array_search($keyword,$data);
// そこで以下のように書きます。
// !== -> 値が等しくないか、同じ型ではない
if ($index !== false) {
    echo $index;
} else {
    echo "false";
}
echo "</li>";
echo "</ul>";

?>
</body>
</html>

出力結果です↓
 2018-05-16 7.30.17.png

参考文献

PHP逆引きレシピ

現場からは以上です。押忍。

7
5
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
7
5