ホームページ >バックエンド開発 >PHPチュートリアル >PHP でよく混同される知識ポイント
この記事では、PHP で混同されやすい知識点を中心に紹介しますので、興味のある方は参考にしていただければ幸いです。
1. echo と print の違い
PHP の echo と print の関数は基本的に同じ (出力) ですが、それでも微妙な違いがあります。二。 echo出力後の戻り値はありませんが、printには戻り値があり、実行失敗時にfalseを返します。したがって、通常の関数として使用できます。たとえば、次のコードを実行すると、変数 $r の値は 1 になります。
$r = print "Hello World";
これは、print は一部の複雑な式で使用できるが、echo は使用できないことを意味します。ただし、echo ステートメントは値を返す必要がないため、コード内の echo ステートメントは print ステートメントよりもわずかに高速に実行されます。
2. include と require の違い
include() と require() の関数は基本的に同じ (include) ですが、いくつかの違いがあります。 include() は条件付き包含関数ですが、require() は無条件包含関数です。たとえば、次のコードでは、変数 $a が true の場合、ファイル a.php がインクルードされます。
if($a){ include("a.php"); }
そして、$a の値に関係なく、require() は include() とは異なります。の場合、次のコードはファイル a.php をファイルに組み込みます。
if($a){ require("a.php"); }
エラー処理の観点から、 include エラーが発生した場合、プログラムは include ステートメントをスキップします。メッセージが表示されても、プログラムは実行を続けます。ただし、requireすると致命的なエラーが発生します。
もちろん、Qifen を文字通りに理解することもできます。require は、非常に強い要求または要件を意味します。
3.require_once() ステートメントと include_once() ステートメント
単純な require_once() ステートメントと include_once() ステートメントはそれぞれ似ているので、話は逸れました。 require() および include() ステートメントに対応します。 require_once() および include_once() ステートメントは主に、複数のファイルをインクルードする必要がある場合に使用され、同じコード部分をインクルードすることによって発生する関数または変数の繰り返し定義でのエラーを効果的に回避できます。
4. 空の文字列 ('') と NULL の違い
PHP では、空の文字列と NULL はどちらも値 0 で格納されますが、その型はecho gettype(''); と echo gettype(NULL); を試してみると、それぞれ string と NULL が出力されることがわかります。もちろん、echo gettype( 0) を試すこともできます。 ); 型を出力すると、0 の型が整数 (整数) であることがわかります。文字列 ('')、NULL、および 0 は「等しい値」ですが、等しくない型ではないことがわかります。
5. isset と empty の違い
文字通りの意味から理解できます。empty は変数が「空」かどうかを判断することですが、isset は変数が「空」であるかどうかを判断することです。変数が設定されているかどうかを判定します。ただし、ここで注意しなければならないことが 1 つあります。それは、変数の値が 0 の場合、empty はその変数が空であるとみなします。つまり、設定がないことと同じです。たとえば、$id 変数を検出するとき、$id=0 の場合、empty と isset を使用して変数 $id が設定されているかどうかを検出します。両方とも異なる値を返します。empty は設定されていないと考え、isset は取得できます。 $id の値については、以下の例を見てください:
$id=0; empty($id)?print "我是空的":print "我是$id ."; //结果:我是空的 !isset($id)?print "我是空的":print "我是$id .";//结果:我是0
6. == (等しい) と === (等しい) の違い
上の 4 番目の空の文字列 ( "") と NULL の例を見てみましょう:
'' == NULL; '' === NULL;
実行後、最初の文字列は true、2 番目の文字列は false であることがわかります。 == は値が等しいかどうかのみを比較しますが、 === は値を比較するだけでなく、型も比較するため、より厳密であることがわかります。
7.self :: this->
PHP クラスのメンバー変数またはメソッドにアクセスする場合、参照される変数またはメソッドが次の場合が const (定数の定義) または static (static の宣言) として宣言されている場合は、演算子:: を使用する必要があります。逆に、参照される変数またはメソッドが const または static として宣言されていない場合は、演算子 -> を使用する必要があります。使用済み。
さらに、クラス内から const または static 変数またはメソッドにアクセスする場合は、逆に、クラス内から非 const または static 変数またはメソッドにアクセスする場合は、自己参照を使用する必要があります。クラスの場合は、自己参照 $this を使用する必要があります。
#8. strstr() と strpos() の違い #stristr() は大文字と小文字を区別しません strstr() は大文字と小文字を区別します
関数検索 別の文字列内で最初に出現した文字列。
成功した場合は、(一致した時点からの) 文字列の残りの部分を返します。文字列が見つからない場合は false を返します。
stripos() は大文字と小文字を区別しません。 strpos() は大文字と小文字を区別します。
この関数は、別の文字列内で最初に出現する文字列の位置を返します。
文字列が見つからない場合は、false を返します。
テストにより、存在するかどうかを検索するだけの場合、strpos() の実行効率は PHP# の strstr()
9 よりも優れていることが証明されています。##同じ点:
以下の 3 つの条件を満たす場合、どちらも同じ情報を出力します。
1. サーバーはポート 802 です。Apache の conf の ServerName 設定は正しいです。#3。 # が異なります ポイント:1. 通常時:
_SERVER["HTTP_HOST"] HTTP/1.1 プロトコル仕様では、クライアントの HTTP リクエストに応じて情報が出力されます。 _SERVER["SERVER_NAME"] デフォルトでは、Apache 設定ファイル httpd.conf の ServerName 値が直接出力されます。 2. サーバーがポート 80 ではない場合: _SERVER["HTTP_HOST"] はポート番号を出力します (例: mimiz.cn:8080 _SERVER[) "SERVER_NAME "] は ServerName の値 を直接出力するため、この場合は次のように理解できます。 HTTP_HOST = SERVER_NAME : SERVER_PORT 3 構成ファイル httpd の ServerName conf は HTTP/1.0 と同じです 要求されたドメイン名が一致しない場合: httpd.conf は次のように構成されます: ServerName mimiz.cn ServerAlias www .mimiz.cn クライアント アクセス ドメイン名 www.mimiz.cn _SERVER["HTTP_HOST"] 出力 www.mimiz.cn _SERVER["SERVER_NAME"] 出力mimiz.cn そのため、実際のプログラムでは、より安全で信頼性の高い _SERVER["HTTP_HOST"] を使用するようにしてください。 ポートマッピングを使用してイントラネットからアクセスする場合は、「$_SERVER['HTTP_X_FORWARDED_HOST']」を使用することをお勧めします。 要約: 以上がこの記事の全内容です。皆さんの学習に役立つことを願っています。 関連する推奨事項:
以上がPHP でよく混同される知識ポイントの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。