ホームページ  >  記事  >  バックエンド開発  >  PHP 開発に切り替えるときによくある落とし穴_PHP チュートリアル

PHP 開発に切り替えるときによくある落とし穴_PHP チュートリアル

WBOY
WBOYオリジナル
2016-07-13 10:13:35958ブラウズ

PHP 開発に切り替えるときによくある落とし穴

1. strrchr関数

W3Schoolサイトの注意事項は以下の通りです:

strrchr() 関数は、別の文字列内で最後に出現した文字列を検索し、その位置から文字列の末尾までのすべての文字を返します。
成功した場合は false を返し、そうでない場合は false を返します。

実際には、この関数は文字列ではなく特定の文字を検索します。公式ドキュメントを参照してください

コード例:

上記のコードの出力
$a = 'abcdef.txt';
$b = '.php';
echo strrchr($a, $b);
は次のとおりです: .txt

言い換えると、$b が文字列の場合、最初の文字のみが使用され、後続の他の文字は無視されます

注: PHP は strstr 関数を提供します。自分で実装するのは非常に簡単ですが、strrstr 関数を提供しないのはいかがでしょうか


2、nullと空、0、3つの値の比較
PHPでは、==はまず型変換を行ってから比較しますが、===は型が異なる場合は直接不等値を返しますので、以下の例を参照してください。

$a = null;
$b = '';
$c = 0;
echo ($a == $b)?1:0;    // 输出1
echo ($a === $b)?1:0;   // 输出0
echo ($a == $c)?1:0;    // 输出1
echo ($a === $c)?1:0;   // 输出0
echo ($b == $c)?1:0;    // 输出1
echo ($b === $c)?1:0;   // 输出0
以前は js または C# コードしか書いたことのない私のようなプログラマーにとって、これら 3 つの値に n 回騙されました (n は 3 より大きいです)


3. foreach での参照割り当て、公式ドキュメントを参照してください

C# を使用する私にとって、この参照割り当ては非常に優れています。C# では foreach の要素を変更することは不可能ですが、PHP では例外が発生します。 公式ドキュメントには次の警告があります。 警告 配列の最後の要素の $value 参照は、foreach ループの後も保持されます。 unset() を使用して破棄することをお勧めします。

コードのセットを見てみましょう:

上記のコードの出力は次のとおりです:
1,2,3,1,2,2 最後の出力は 3 ではなく 2 です。これは、コード内で $item が破棄されていないためです。理由は次のとおりです。 1回目のループでは$itemに3の参照が代入され、2回目のループでは$itemが参照なので配列の要素3が1になります。



4. isset と empty

の関係と違い、isset document empty document

empty は、次の 8 つの状況で true を返します: null、空の文字列 ""、文字列 0 "0"、空の配列、ブール値 false、数値 0、浮動小数点数 0.0、クラス内で var で定義されていますが、値は割り当てられていません
isset は、変数が設定されていて NULL ではないかどうかをチェックしますが、空の 8 つのケースでは、null のみが false を返し、他の 7 つのケースは true を返します

要約すると、empty で説明される 7 つの非 null 状況を除き、他の場合では、if(empty(variable)) は if(!isset(variable)) と同等です


http://www.bkjia.com/PHPjc/914776.html

www.bkjia.comtru​​ehttp://www.bkjia.com/PHPjc/914776.html技術記事 PHP 開発に切り替える場合、いくつかの一般的な落とし穴があります。 1. strrchr 関数は、W3School サイトで次のようにコメントされています: strrchr() 関数は、別の文字列内で最後に出現する文字列を検索し、...
声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。