ホームページ >バックエンド開発 >PHPチュートリアル >PHP文字列の長さを決定するより効率的な方法

PHP文字列の長さを決定するより効率的な方法

怪我咯
怪我咯オリジナル
2017-07-04 11:51:182101ブラウズ

php で string の長さを決定する必要がある場合、最初に考えるのは strlen()関数 です。そうです、strlen() は文字列の長さを返すので、何もありません。このように使用する場合の問題。ただし、PHP プログラムの最適化の観点から見ると、strlen() を使用して文字列の長さを決定するのがおそらく最良の記述方法です

経験豊富なプログラマーは、PHP で isset() を使用して文字列の長さを決定するのはstrlen() よりも高速であり、より効率的に実行されます。
つまり:

コードは次のとおりです:

$str = ‘aaaaaa';
if(strlen($str) > 6)
VS
if(!isset($str{6})


例を使用した簡単なテストの後、状況は基本的に true であり、 isset() は strlen() よりもほぼ 3 倍効率的です。
例:

コードは次のとおりです:

<?php
 //使用strlen方式
 $arr = "123456";
 $sTime = 
microtime
(1);
 if(strlen($arr) > 6){
 // echo 1;
 }
 echo microtime(1) -  $sTime;

出力: 0.00035595893859863

コードは次のとおりです:

<?php
//使用isset($arr{})方式
 $arr = "123456";
 $sTime = microtime(1);
 if(!isset($arr{6})){
 // echo "1\r\n";
 }
 echo microtime(1) - $sTime;

出力: 0.00 01909732818 6035

isset() なぜ速いのかstrlen()
strlen よりも () 関数は、計算を行わず、zval 構造体 (PHP 変数を格納するために使用される C の組み込みデータ構造) に格納されている既知の文字列長を返すだけなので、非常に高速に実行されます。ただし、strlen() は関数であるため、関数呼び出しは小文字などの多くの手順を経るため、多少遅くなります (注釈: 小文字の関数名を指します。PHP は関数名の大文字と小文字を区別しません)。 )、ハッシュ検索、呼び出された関数と一緒に実行されます。
場合によっては、 isset() トリックを使用すると、コードの実行速度が向上することがあります。 isset() は言語構造であるため、その実行には関数の検索や小文字の文字は必要ありません。つまり、実際には、最上位コードで文字列の長さをチェックするオーバーヘッドはそれほどかかりません。

つまり、 isset() を呼び出す方が strlen() よりも高速です。

以上がPHP文字列の長さを決定するより効率的な方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。