今回は最後の一文字を取る方法について調査してみました。
方法1
$str = 'abcde'; substr($str, -1);方法2
$str = 'abcde';
$str{strlen($str)-1};
サンプルコード
実行結果
BenchMark 1 average:0.0076918125152588 BenchMark 2 average:0.0067881345748901あんまり差がつきませんでしたね。
速度を取るなら後者、文字数を取るなら前者でしょうか。
$str = 'abcde'; substr($str, -1);方法2
$str = 'abcde';
$str{strlen($str)-1};
サンプルコード
実行結果
BenchMark 1 average:0.0076918125152588 BenchMark 2 average:0.0067881345748901あんまり差がつきませんでしたね。
BenchMark 1 average:0.0046348333358765 BenchMark 2 average:0.01211142539978 BenchMark 3 average:0.012383699417114変数と比べて配列は3倍くらい遅いですね。
BenchMark 1 average:0.2620055437088 BenchMark 2 average:0.26266303062439 BenchMark 3 average:0.26184134483337こんな感じでした。
BenchMark 1 average:0.11058385372162 BenchMark 2 average:0.11761968135834 BenchMark 3 average:0.11095626354218ローカル変数よりメンバ変数が遅いのはともかくとして、比較するとstaticの方が速いですね。
BenchMark 1 average:0.58168365955353 BenchMark 2 average:0.56918079853058サンプルコード 実行結果
BenchMark 1 average:0.58172357082367 BenchMark 2 average:0.58285653591156今回はここまでです。
BenchMark 1 average:0.084321331977844 BenchMark 2 average:0.034408354759216速度も問題ありませんね。
NULL : NULL
"" : NULL
"a" : NULL
0 : int(0)
1 : int(1)
+1 : int(1)
-1 : int(-1)
0x0A : int(10)
012 : int(10)
0.1 : int(0)
1e3 : int(1000)
1e-3 : int(0)
array("") : NULL
array("a") : NULL
array(array("a")) : NULL
TRUE : NULL
FALSE : NULL
object : NULL
fopen : NULL
成功です。以降、数値のチェックをする際はこの関数を使って入力チェックを行っていきます。
NULL : string(0) ""
"" : string(0) ""
"a" : string(1) "a"
0 : int(0)
1 : int(1)
+1 : int(1)
-1 : int(-1)
0x0A : int(10)
012 : int(10)
0.1 : float(0.1)
1e3 : float(1000)
1e-3 : float(0.001)
array("") : string(0) ""
array("a") : string(0) ""
array(array("a")) : string(0) ""
TRUE : bool(true)
FALSE : bool(false)
object : string(0) ""
fopen : string(0) ""