PHPのstrcmp()関数とは?文字列比較の基本と実行例をわかりやすく解説
はじめに
PHPのstrcmp()関数は、2つの文字列を比較するために使用される組み込み関数です。バイナリセーフな文字列比較を行い、2つの文字列が等しいか、どちらが大きいか(辞書順で後か)を判定できます。
注意: strcmp()関数は大文字と小文字を区別します。大文字・小文字を区別せずに比較したい場合は、strcasecmp()関数を使用してください。
構文
strcmp(str1, str2)
パラメータ
str1 − 比較する1つ目の文字列
str2 − 比較する2つ目の文字列
戻り値
strcmp()関数は、比較結果として以下の整数値を返します。
0 − 2つの文字列が等しい場合
0より小さい値(<0) − str1がstr2より小さい場合(辞書順で前にある場合)
0より大きい値(>0) − str1がstr2より大きい場合(辞書順で後にある場合)
返される数値の絶対値は、最初に一致しなかった文字同士のASCIIコードの差に基づきます。
使用例1:大文字と小文字の違いによる比較
以下は、大文字と小文字が異なる文字列を比較する例です。
<?php
echo strcmp("windows", "Windows");
?>
出力
32
「w」と「W」のASCIIコードの差(119 − 87 = 32)が返されているため、この結果からもstrcmp()が大文字と小文字を区別していることが確認できます。
使用例2:文字列の長さが異なる場合の比較
次に、途中までは同じですが長さが異なる文字列を比較する例を見てみましょう。
<?php
echo strcmp("Windows OS", "Windows Operating System");
?>
出力
-7424
「OS」と「Operating System」以降の文字列の差が負の値として返されます。つまり、1つ目の文字列「Windows OS」の方が2つ目の文字列より小さいと判定されています。
まとめ
strcmp()関数は、大文字小文字を区別して2つの文字列を比較するシンプルな関数です。戻り値は「0」「負の値」「正の値」の3種類に分類され、単純に等しいかどうかだけでなく、文字列の順序関係も判定できます。等しいかどうかだけを確認したい場合は、戻り値を === 0 と比較するのが安全です。なお、大文字小文字を区別したくない場合はstrcasecmp()、自然な順序で比較したい場合はstrnatcmp()などの代替関数も活用するとよいでしょう。
-
PHPのcrc32()関数とは?使い方とデータ整合性チェックの方法
crc32()関数は、文字列から32ビット長のCRC(巡回冗長検査)チェックサムを計算するためのPHP組み込み関数です。主にデータの整合性を検証する目的で使用され、送信前後のデータが一致しているかどうかを簡単に確認できます。crc32()関数の概要CRC(Cyclic Redundancy Check:巡回冗長検査)は、データ通信やファイル転送時に発生する誤りを検出するための代表的な手法です。crc32()関数を使えば、任意の文字列に対応するチェックサム値(整数)を取得できます。同じ入力に対しては常に同じ値が生成されるため、データが途中で破損・改変されていないかを検証する際に役立ちます。構文c
-
PHPのbin2hex()関数とは?文字列を16進数に変換する方法をわかりやすく解説
PHPのbin2hex()関数は、文字列(ASCII文字)を16進数表現に変換するための組み込み関数です。バイナリデータや文字列を16進数の文字列として扱いたい場合に便利で、データのエンコード処理などによく利用されます。 構文 bin2hex(str) パラメータ str − 16進数に変換したい文字列を指定します。 戻り値 bin2hex()関数は、引数に渡されたASCII文字列を1バイトずつ16進数の値に変換し、その結果を文字列として返します。戻り値は常に英数字(0〜9、a〜f)で構成される文字列になります。 実際の使用例を見てみましょう。 例1:基本的な使い方 <?php