##配列から特定のキーワードを検索した〜〜い!→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>
###参考文献
PHP逆引きレシピ
現場からは以上です。押忍。