
スキルアップ
2021.01.08
社会人の勉強は何をするべき?勉強のメリットと勉強方法も紹介!
社会人になっても勉強は必要!と言われても、何を勉強したら良いのか迷いますよね。仕事に関わるスキルを磨いたり、資格を取得したりする他にも、勉強できることはたくさんあります。ここでは、社会人が勉強するメリット、オススメの勉強 […]
PHP
2019.05.07
PHP で文字列を比較すると、見た目が違う 2 つの文字列が等しいと判定されるなど、意図する結果が得られない場合があります。
今回は PHP で文字列を比較する方法を紹介します。
尚、本サイトでは XAMPP( ザンプ )という開発環境を使用しています。
XAMPP のインストール方法や起動方法については以下の記事をご参照下さい。
PHP【 開発環境 】XAMPP インストール
PHP【 開発環境 】XAMPP の使い方
最終更新日:2019年5月7日
1.比較演算子で文字列を比較
2.strcmp で文字列を比較
3.strcasecmp で文字列を比較
PHP で手軽に文字列を比較できるのは、比較演算子を使用する方法です。
比較対象の 2 つの文字列をイコール記号を使って次のように記述します。
文字列 1 == 文字列 2
文字列 1 === 文字列 2
「 == 」を使用すると 異なるデータ型間でも自動的にデータ型を揃えて値の比較が行われ、「 === 」を使用すると データ型を含めて比較が行われます。
文字列型の「 1 」と数値型の「 1 」を比較する場合、「 == 」を使用すると判定は true となり、「 === 」を使用すると判定は false となります。
比較演算子を使用して 文字列を比較してみます。
下記のようなソースファイルを作成して ブラウザからアクセスすると、次のような表示になります。
( ソースファイルの作成方法についてはソースファイルを作成を、サーバの起動方法等についてはサーバを起動を、それぞれご参照下さい。)
<pre> <?php var_dump("1" == 1); var_dump("1" === 1); var_dump(1 == "1cm"); var_dump(1 === "1cm"); ?> </pre>
「 “1” == 1 」が true で「 “1” === 1 」が false となるのは想定できますが、「 1 == “1cm” 」が true と判定されるのは意外な結果ではないでしょうか。
このように、数字を含む文字列を「 == 」で比較すると、意図した結果が得られない場合があります。
文字列内に数字が入ることはよくあることなので、比較演算子で文字列を比較する場合は「 == 」ではなく「 === 」を使用した方が安全です。
var_dump 関数についてはvar_dumpをご参照下さい。
また、<pre> ~ </pre> はデータを改行して出力するために記述しています。
strcmp 関数を使用して 文字列を比較することもできます。
strcmp 関数を実行すると、比較対象の文字列が等しければ 0 が、先に指定した文字列のサイズの方が大きい場合は 1 が、先に指定した文字列のサイズの方が小さい場合は -1 が 返ります。
戻り値が true / false ではない点に注意が必要です。
strcmp 関数は 次のように記述して使用します。
strcmp ( 文字列 1, 文字列 2 ) ;
strcmp 関数を使用して 文字列を比較してみます。
下記のようなソースファイルを作成して ブラウザからアクセスすると、次のような表示になります。
( ソースファイルの作成方法についてはソースファイルを作成を、サーバの起動方法等についてはサーバを起動を、それぞれご参照下さい。)
<?php echo strcmp("PHP", "PHP"); echo "<br><br>"; echo strcmp("php", "PHP"); echo "<br><br>"; echo strcmp("PHP", "ピーエイチピー"); ?>
「 echo 」は、データを出力するために使用する PHP の命令です。
strcmp 関数の引数で指定した 2 つの文字列が等しい場合は 0 が、等しくない場合は文字列のサイズを比較して 1 又は -1 が返っています。
上のサンプルでは「 strcmp(“PHP”, “PHP”) 」のように 比較する文字列を引数に直接指定していますが、通常は「 strcmp($str1, $str2) 」のように文字列変数を指定することが多いです。
システム内で文字列の比較をする場面では、文字列が等しいかどうかを判定して後続処理を分岐させるという流れになるのが一般的なので サイズの比較をすることはあまりないと思いますが、戻り値が true / false ではない点が要注意です。
文字列を比較する関数として、strcasecmp 関数もあります。
比較演算子や strcmp 関数がアルファベットの大文字と小文字とを区別して比較するのに対して、strcasecmp 関数は大文字と小文字とを区別せずに比較します。
strcasecmp 関数を実行すると、比較対象の文字列が等しければ 0 が、先に指定した文字列のサイズの方が大きい場合は 1 が、先に指定した文字列のサイズの方が小さい場合は -1 が 返ります。
戻り値が true / false ではない点に注意が必要です。
strcasecmp 関数は 次のように記述して使用します。
strcasecmp ( 文字列 1, 文字列 2 ) ;
strcasecmp 関数を使用して 文字列を比較してみます。
下記のようなソースファイルを作成して ブラウザからアクセスすると、次のような表示になります。
( ソースファイルの作成方法についてはソースファイルを作成を、サーバの起動方法等についてはサーバを起動を、それぞれご参照下さい。)
<pre> <?php $str1 = "PHP_プログラマカレッジ"; $str2 = "php_プログラマカレッジ"; var_dump($str1 === $str2); var_dump(strcmp($str1, $str2)); var_dump(strcasecmp($str1, $str2)); ?> </pre>
比較演算子及び strcmp 関数で文字列を比較すると「 PHP 」と「 php 」とは異なる文字列として判定されるのに対して、strcasecmp 関数を使用した場合は「 PHP 」と「 php 」とが等しい文字列として判定されます。
var_dump 関数についてはvar_dumpをご参照下さい。
また、<pre> ~ </pre> はデータを改行して出力するために記述しています。
スキルアップ
2021.01.08
社会人になっても勉強は必要!と言われても、何を勉強したら良いのか迷いますよね。仕事に関わるスキルを磨いたり、資格を取得したりする他にも、勉強できることはたくさんあります。ここでは、社会人が勉強するメリット、オススメの勉強 […]
スキルアップ
2021.01.08
独学でフリーランスエンジニアを目指す方へ向けて、未経験からフリーランスエンジニアになるための手順や独学でのプログラミング学習法、必要なスキルなどをご紹介します。 独学とスクールどちらで勉強すればいいか迷っている、そもそも […]
スキルアップ
2021.01.05
高卒女子の就職内定率は大卒女子とほぼ同じ。でも知恵袋には「高卒女性が応募できる正社員求人って少ないのでは…?」と心配する人たちもいるようですが、資格なしでも高収入が期待できる仕事はたくさんあります。そこで今回は現役女子高 […]
スキルアップ
2020.12.30
プログラマの仕事に興味はあるものの「プログラマの仕事はきつい」というのを耳にして不安に思ったりしていませんか?なぜプログラマの仕事はきついといわれるのか?そもそも未経験からでもプログラマになれるのか?本記事では、プログラ […]
スキルアップ
2020.12.21
技術の進歩に伴い、IT業界も人気の業界のひとつとなりましたが、「IT業界はブラック企業が多いからエンジニアを目指すのはやめとけ」という声も聞こえてきます。これは本当なのでしょうか?この記事では、実際の疑問の声に対する理由 […]
スキルアップ
2020.12.18
仕事にやりがいを感じられず悩んではいませんか?本記事では、仕事で満足感を得るにはどうすればいいのか、やりがいの感じやすいお仕事7選、仕事にやりがいを見つけるポイント、転職しなくても仕事の満足度をあげる方法などをご紹介しま […]
INTERNOUS,inc. All rights reserved.