とぎぷろべい

包丁研ぎとプログラミングと米国株投資についてのなんやかんや

is_numeric関数について(PHP)

f:id:feci:20210727001932j:plain

PHP7

 

PHP7.4.1におけるis_numeric関数について。

<?php

echo 'なにか値を入力してください';
$number = trim(fgets(STDIN));

$numeric = is_numeric($number);


//①基本形
if($numeric == true) {
  echo 'これは数字ですね?';
else {
  echo 'これは数字以外の文字列ですね?';
}


//②trueの記述を省略したパターン
if($numeric) {
  echo 'これは数字ですね?';
else {
  echo 'これは数字以外の文字列ですね?';
}


//③if文の条件式内で直接関数を使ったパターン
if(is_numeric($number)) {
  echo 'これは数字ですね?';
else {
  echo 'これは数字以外の文字列ですね?';
}

is_numeric関数は、指定した値が半角数字の場合にtrueを返り値とする関数です。

 

指定した値が半角数字であれば、int型でもstr型でも返り値はtrueとなります。

半角数字以外の文字列の場合は、返り値はすべてfalseとなります。

 

このtrueとfalseはbool値真偽値とも呼ばれます。

上記のプログラムのように、条件式などでtrueやfalseを使う場合はクオーテーション記号で囲ってはいけません。

 

もし囲うとbool値はただの文字列あつかいになってしまい、プログラムの挙動がおかしくなります。

 

 

ちなみに、上記のプログラムは3つとも出力結果はまったく同じです。

 

値に半角数字が入力されれば「これは数字ですね?」と出力されます。

値に半角数字以外の文字列が入力されれば一律で「これは数字以外の文字列ですね?」と出力されます。

 

 

あとif文の条件式の == true の記述は、②のパターンのように記述を省略することも可能です。

 

③は == true の記述を省略しつつ、条件式内に直接関数をもってきたパターンです。

関数の返り値を他のプログラムでも使いまわす必要がない場合などは、③のパターンのように直接if文の条件式内に関数をもってくることもあるようです。

 

 

以上です。