【PHP】文字列を比較する方法
wordpressで文字列が一緒の時は処理を変えたかったんだけど、どうやって比較すればいいのかわからなかったので備忘録
方法1:「==」を使った比較方法
テキストだから何か特別な事をして比較しないといけないのかと思ったけど、普通の比較演算子==
と===
を使うだけでいいみたい
$title = "ページタイトル";
if($title == "ページタイトル"){// 「===」でも可
echo "true";// trueを返す
}
==
と===
の違いは、型まで厳密にチェックするかしないかみたい
==
は型まではチェックしないので
if(2 == "2"){…}// true
if(2 == 2){…}// true
どっちもtrue
だけど===
は型までチェックするから
if(2 === "2"){…}// false
if(2 === 2){…}// true
文字列と数値は型が違うからfalseになる
型まで厳密にチェックをしたかったら===
を使う
ちなみに等しくない(!
)を使った書き方だと
==
は!=
===
は!==
って「=(イコール)」が一つ減るみたいね
メモ:型の確認する方法
型のチェックはgettype()
で確認できる
echo gettype(1);// integer
echo gettype('1');// string
integerってなんだ?って調べたら「整数値」って意味みたい
intってワードだったらよく見かけるけど同じ意味みたいね
方法2:strpos()を使って特定の文字列が入っているかどうかで比較する方法
strpos()
は検索対象から検索する文字が何番目にあるかどうかを返して、検索する文字列がなかったらfalseを返す
// strpos('検索対象','検索する文字列');
$title = "ページタイトル";
if( strpos($title ,"ページ") !== false){
echo "true";//テキストは存在しているからtrue
}else{
echo "false";
}
テキストはあるのでtrue判定なんだけど、注意すべき点が一つある
strpos()
は「検索する文字」があったら「検索対象」の中の何番目にあるかどうか返すから、もし一番最初にあるとき0
を返してしまい0
はfalse判定になるので!== false
や=== false
を使って型まで厳密に比較する必要があるみたい
メモ:falseの型ってなんなんだろう?
ちょっと気になったんでgettype(false)
で調べたら「boolean」って出てきた
調べると「論理型」っていうtrue(真)やfalse(偽)の型が存在しているみたいね
知らんかった…
方法3:strcmp()を使って文字列の長さで比較する方法
strcmp()
を使えば文字列の長さで比較して確認することができるみたい
基本的な使い方だと
strcmp(str1, str2)で
「str1がstr2より小さい」と負の正数
「str1がstr2より大きい」と正の正数
同じだと0
を返すみたい
$title = "ページタイトル";
echo strcmp($title ,"ページタイトル");// 0
echo strcmp($title ,"ページタイトルです");// -6
echo strcmp($title ,"ページ");// 12
なので、比較するときは以下のように書く
$title = "ページタイトル";
if(strcmp($title,"ページタイトル") == 0){
echo "true";// 同じ文字数なのでtrue
}else{
echo "false";
}
== 0
は数値の型だしstrcmp()
も数値を返すので=== 0
みたいに厳格にチェックしても問題無さそう