最終更新日: 2011/04/02
1. リストを使用して、エクスプロード後の特定のセグメント値を一度に取得します。
list( , $mid) =explode(';', $string);
2. is_null の代わりに NULL === を使用します。
is_null と NULL === はまったく同じ効果がありますが、関数呼び出しを保存します。
3. ==:
PHP には 2 セットの等価比較演算子 ===/!== と ==/!= があり、==/!= は暗黙的な型変換を行いますが、===/!== は厳密です。 2 つの演算を比較する場合、それらの型が同じで値が等しいかどうか。
変換規則を覚えるのが難しいという事実に加えて、次の点も考慮する必要があります。 === を使用すると、将来のメンテナンスが容易ではなくなります。そうしないと、コードを読む人も「現時点では、このステートメントのこの変数はこの型である!」と安心するでしょう。 🎜>
4. 継続を少なくする/継続しない:
継続はループの先頭に戻り、ループの終わりはループの先頭に戻ります。したがって、適切な構築により、次のことが可能になります。
5. switch/in_array などには注意してください。
switch と in_array はどちらも緩い比較を使用するため、変数の型を比較する必要があります。
コードをコピー コードは次のとおりです:
switch ( $name) {
ケース "ラルエンス":
...
ブレーク;
ケース "イブ":
...
ブレーク; 🎜>
上記のスイッチの場合、$name が数値 0 の場合、同じことが in_array にも当てはまります。
解決策は、切り替える前に変数の型を期待する型に変換することです。 .
コードは次のとおりです: switch (strval($name)) { case " laruence":
...break;
case "eve":
...
break;
}
ただし、in_array は、デフォルトの比較方法を変更できる 3 番目のオプションのパラメータを提供します。
6. スイッチは、変数を識別するためにのみ使用されます。
たとえば、次のコード部分の場合:
コードは次のとおりです: if($a) { } else if ($b) {
} else if ($c || $d) {}
これは次のように簡単に書き換えることができます:
コードは次のとおりです。 switch (TRUE) { case $a:
break;case $b:
break; >case $c:
case $d:
break;
}
はい、最初に変数を定義してから使用するとわかりますか? :
未定義の変数を使用すると、定義された変数を使用するよりも 8 倍以上遅くなります。
同様のことがあり、PHP エンジンはまず通常のロジックに従ってこの変数を取得しますが、この変数は存在しません。そのため、PHP エンジンは NOTICE をスローし、未定義の変数を使用するときに従うべきロジックのセクションを入力してから、新しい変数を返す必要があります。
さらに、コードを読み取る観点から、未定義の変数を使用する場合は次のようになります。 「この変数はどこで初期化されているのですか? 前のコードと何か関係がありますか? インクルードされたファイルと何か関係がありますか?」
$a = $a $b; $a = $a - $b; >ただし、 – */精度の低下やオーバーフローが発生しやすいため、XOR を使用することをお勧めします。 9. Floor == 2 つの NOT 演算 (この記事は Skiyo から提供されています)
コードをコピーします
コードは次のとおりです:
コードをコピーコードは次のとおりです:
echo ~~9999999999999.99; //276447231
echo Floor(99999999999999.99) //99999999999999
, PHP 同様に、do{}while(0) を使用して賢いアプリケーションを作成することもできますコードをコピーします
コードは次のとおりです。
do{
if(true) {
break;
}
if(true) {
break;
}
} while(false) ;
//
if(true) {
} else if(true) {
} else {
}
コード をコピーすると、コードは次のようになります:
@func();
コードをコピー コードは次のとおりです:
$report = error_reporting(0);
error_reporting($report);
さらに、エラー抑制シンボルはいくつかの問題を引き起こす可能性があります。(http://www.jb51.net/article/27022.htm) を参照してください。
最後に、エラー抑制機能もエラーのデバッグが発生するときに問題を引き起こす可能性があります。 🎜>12. 再帰の使用を避けるようにしてください (lazyboy のこの記事)
if ($n = 0) return 1; return $n * f ($n - 1); } //次のように変更されます: $result = 1;
for ($y = 1; $y $result *= $y;// 次のように置き換えます: if (!strncasecmp(" foo_", "FoO_", 4)) { } if (preg_match("![a8f9]!", "sometext")) { } // 次のように置き換えます: if (strpbrk(" a8f9", "sometext")) { }
if (preg_match("!string!i", "text")) {}// 次のように置き換えます:
if (stripos("text", "string") !== false) {}
など
16. 二重引用符で囲まれた変数
とヒアドキュメントは次のとおりです:
echo "$name [2]";
PHP はプログラマの意図が $name であるかどうかを知りません。 "[2]" または $name [2],
したがって、中かっこを追加することをお勧めします:
17. 操作クラス関数の場合、失敗は FALSE を返します。 「操作が失敗しました。」一方、クエリ クラス関数の場合、必要な値が見つからない場合は、「見つからない」ことを意味する NULL を返す必要があります。