ホームページ >バックエンド開発 >PHPチュートリアル >PHP パフォーマンスの最適化: isset() は strlen() より高速です

PHP パフォーマンスの最適化: isset() は strlen() より高速です

小云云
小云云オリジナル
2017-11-25 09:02:022341ブラウズ

多くのプログラマは、文字列の長さを判断するときに strlen() mb_strlen() などの関数を使用することを好みますが、 strlen() mb_strlen() などの関数が最適ではないことを知りません。実際、PHP が文字列の長さを決定する場合、isset() を使用した方が strlen() よりも高速であり、実行効率が高くなります。 PHP で文字列の長さを決定するには、isset() を使用する方が strlen() よりも高速で、実行効率が高くなります。

それでは、なぜ isset() が strlen() よりも速いのでしょうか?

strlen() 関数は計算を行わず、zval 構造体 (PHP 変数の格納に使用される C の組み込みデータ構造体) に格納されている既知の文字列長を返すだけなので、非常に高速に実行されます。ただし、strlen() は関数であるため、関数呼び出しは小文字やハッシュ検索など多くの手順を経て、呼び出された関数と一緒に実行されるため、多少遅くなります。したがって、場合によっては、 isset() を適切に使用すると、プログラムの速度が向上することがあります。 isset() は言語構造体であるため、その実行には関数の検索や文字の小文字などは必要ありません。

isset() と strlen() を通じて文字列の長さを決定する具体的な例は次のとおりです:

 $str='http://www.phpernote.com/php-template/436.html';    
 if(strlen($str)<5){echo "未满5";}    
if(!isset($str{5})){echo "未满5";}

2 つの関数 strlen() と isset() を詳しく分析してみましょう。

PHP strlen() 関数

定義と使用法

strlen() 関数は文字列の長さを返します。

構文: strlen(string)

パラメータ: 文字列
説明: 必須。チェックする文字列を指定します。

strlen() 関数インスタンス

<?php    
 echo strlen("Hello world!");    
?>

結果が出力されます:

12

PHP isset() 関数

isset 関数は、変数が設定されているかどうかを検出する関数です。

構文: bool isset (mixed var [,mixed var [, ...]] )

戻り値:

変数が存在しない場合は FALSE を返します
変数が存在し、その値が NULL の場合は、また、FALSE を返します
If 変数が存在し、値が NULL でない場合は、TRUE が返されます
複数の変数を同時にチェックする場合、各単一項目が前の要件を満たしている場合にのみ TRUE が返され、それ以外の場合、結果は FALSE になります
unset() を使用して変数が解放された場合、それは isset() ではなくなります。 isset() を使用して NULL に設定された変数をテストすると、FALSE が返されます。また、NULL バイト ("") は PHP の NULL 定数と同等ではないことに注意してください。

警告: isset() は変数でのみ使用できます。他のパラメータを渡すと解析エラーが発生するためです。定数が設定されているかどうかを確認したい場合は、define()関数を使用します。

isset() が strlen() よりも速い理由は上記です。

関連する推奨事項:

phpでisset()関数とunset()関数を使用する方法の詳細な説明

文字列の長さを返すphp関数strlen()

PHPは文字列長関数を取得しますstrlen() 関数

以上がPHP パフォーマンスの最適化: isset() は strlen() より高速ですの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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