php strcmpを使って同じ文字列であるかを判定する
phpで、strcmpを使用して、同じ文字列であるかを判定するサンプルコードを記述してます。phpのバージョンは8.0です。
環境
- OS CentOS Linux release 8.0.1905 (Core)
- php 8.0.0
- nginx 1.14.1
strcmp使い方
strcmpを使用すれば、同じ文字列であるかを判定することが可能です。
strval(変数);
【戻り値】
文字数が第一引数より第二引数が大きい場合は < 0
文字数が第一引数より第二引数が小さい場合は > 0
第一引数と第二引数が同じの場合は 0
以下は、同じ文字列であるかを判定するサンプルコードとなります。
<?php
echo (strcmp('mebee','mebee') == 0 ? '同じです' : '異なります').PHP_EOL;
// 同じです
echo (strcmp('あいうえお','あいうえお') == 0 ? '同じです' : '異なります').PHP_EOL;
// 同じです
echo (strcmp('mebee','Mebee') == 0 ? '同じです' : '異なります').PHP_EOL;
// 異なります
echo (strcmp('mebee','me') == 0 ? '同じです' : '異なります').PHP_EOL;
// 異なります
echo (strcmp('10','10') == 0 ? '同じです' : '異なります').PHP_EOL;
// 同じです
echo (strcmp('10','10.0') == 0 ? '同じです' : '異なります').PHP_EOL;
// 異なります
echo (strcmp('10','010') == 0 ? '同じです' : '異なります').PHP_EOL;
// 異なります
echo (strcmp('10','1e1') == 0 ? '同じです' : '異なります').PHP_EOL;
// 異なります
echo (strcmp('10',10) == 0 ? '同じです' : '異なります').PHP_EOL;
// 同じです
大文字と小文字は区別されて、数値と文字列は区別されません。
大文字と小文字を区別して、異なるという判定が必要な場合は「strcasecmp」を使用します。その他の結果は同じになります。
<?php
echo (strcasecmp('mebee','mebee') == 0 ? '同じです' : '異なります').PHP_EOL;
// 同じです
echo (strcasecmp('あいうえお','あいうえお') == 0 ? '同じです' : '異なります').PHP_EOL;
// 同じです
echo (strcasecmp('mebee','Mebee') == 0 ? '同じです' : '異なります').PHP_EOL;
// 同じです
echo (strcasecmp('mebee','me') == 0 ? '同じです' : '異なります').PHP_EOL;
// 異なります
echo (strcasecmp('10','10') == 0 ? '同じです' : '異なります').PHP_EOL;
// 同じです
echo (strcasecmp('10','10.0') == 0 ? '同じです' : '異なります').PHP_EOL;
// 異なります
echo (strcasecmp('10','010') == 0 ? '同じです' : '異なります').PHP_EOL;
// 異なります
echo (strcasecmp('10','1e1') == 0 ? '同じです' : '異なります').PHP_EOL;
// 異なります
echo (strcasecmp('10',10) == 0 ? '同じです' : '異なります').PHP_EOL;
// 同じです
数値と文字列を比較して、異なるという判定が必要な場合は「===」演算子を使用します。その他の結果は同じになります。
<?php
echo(('mebee' === 'mebee') ? '同じです' : '異なります').PHP_EOL;
// 同じです
echo(('あいうえお' === 'あいうえお') ? '同じです' : '異なります').PHP_EOL;
// 同じです
echo(('mebee' === 'Mebee') ? '同じです' : '異なります').PHP_EOL;
// 異なります
echo(('mebee' === 'me') ? '同じです' : '異なります').PHP_EOL;
// 異なります
echo(('10' === '10') ? '同じです' : '異なります').PHP_EOL;
// 同じです
echo(('10' === '10.0') ? '同じです' : '異なります').PHP_EOL;
// 異なります
echo(('10' === '010') ? '同じです' : '異なります').PHP_EOL;
// 異なります
echo(('10' === '1e1') ? '同じです' : '異なります').PHP_EOL;
// 異なります
echo(('10' === 10) ? '同じです' : '異なります').PHP_EOL;
// 異なります
また、文字列の比較は「===」を使用した方がパフォーマンスは遥かにいいです。
【参考】 同じコードを1000万回実行した結果
測定結果 : strcmp
process time: 2.79246 ミリ秒
測定結果 : ===
process time: 0.53891 ミリ秒
-
前の記事
javascript lodashを使って数値変換を行う 2021.11.26
-
次の記事
rails6 link_toをtarget_blankで開く 2021.11.26
コメントを書く