ホームページ  >  記事  >  バックエンド開発  >  PHP コーディングのヒント (php ヒント) [最終更新日 2011/04/02]_PHP チュートリアル

PHP コーディングのヒント (php ヒント) [最終更新日 2011/04/02]_PHP チュートリアル

WBOY
WBOYオリジナル
2016-07-21 15:30:34821ブラウズ

最終更新日: 2011/04/02

1. 分解後にリストを使用して特定のセグメント値を取得します:
list( , $mid) =explode(';', $string);
2. 代わりに NULL == = を使用します。 is_null の:
is_null と NULL === はまったく同じ効果がありますが、関数呼び出しを保存します

3. === を使用し、== は使用しないでください:
PHP には 2 つの等価比較演算子があります == = /!== と ==/!=、==/!= は暗黙的な型変換を行いますが、===/!== は 2 つの演算が同じ型で等しい値を持つかどうかを厳密に比較します
== の代わりに === を使用するのが最善です。変換ルールが覚えにくいだけでなく、=== を使用すると、将来のメンテナンスやコードを読む人にとっても非常に快適になります。この瞬間、この行のステートメント、この変数はこの型です!"。

4. continue の使用を減らすか、まったく使用しない:
continue はループの先頭に戻り、ループの最後はループに戻ります。

5. switch/in_array での緩い比較に注意してください:
switch と in_array は両方とも緩い比較を使用するため、比較する変数が異なると間違いが発生しやすくなります:

コードをコピーします。 コードは次のとおりです:
switch ($name) {
case "laruence":
。 ..
break;
case "eve":
. ..
break;
}

上記のスイッチの場合、$name が数値 0 の場合、同じことが in_array にも当てはまります。
解決策は、スイッチの前に変数の型を変更することです。 期待する型に変換します。



コードをコピーします。 コードは次のとおりです。
switch (strval($name)) { case "laruence ": ...
break;
case "eve":
...
break;
}



ただし、in_array には、デフォルトの比較方法を変更できる 3 番目のオプションのパラメータが用意されています。
6. Switch は変数を識別するためだけに使用されるわけではありません:
たとえば、次のコード部分の場合:


コードをコピー

コードは次のとおりです:
if($a) { } else if ($b ) { } else if ($c || $d) {
}


は次のように簡単に書き換えることができます:


コードをコピー

コードは次のとおりです:
switch (TRUE) { case $a: break;
case $b:
break;
}


7. 変数を定義してから使用すると分かりやすいと思います。
未定義の変数を使用すると、定義された変数を使用するよりも 8 倍以上遅くなります
同様に、PHP エンジンは通常のロジックに従って最初にこの変数を取得しますが、この変数は存在しないため、PHP エンジンは NOTICE をスローする必要があります。未定義の変数を使用するときに従う必要があるロジックのセクションを入力し、新しい変数を返します
さらに、コードを読む観点から見ると、未定義の変数を使用すると、コードを読む人が混乱します。 「この変数はそこで初期化されていますが、前のコードと何か関係がありますか? それを含めますか?」
最後に、標準プログラミングの観点から、これも行う必要があります。
8. 3 番目の変数を使用しない 2 つの変数の値:
list($a, $b) = array( $b, $a),
しかし、実際には、整数の場合はさらに多くの匿名の一時変数が存在します。相互演算を使用するのが確実です:



コードをコピーします

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


$a = $a + $b;
$b = $a - $b; $b;
ただし、+ – * / は精度が失われる可能性があるため、XOR を使用することをお勧めします。コードをコピーします コードは次のとおりです:

echo ~~4.9;
echo Floor(4.9);

使用法 2 つの NOT 演算の速度は基本的に Floor の 3 倍ですが、1 つあります。数値が大きい場合、オーバーフローが発生する可能性があります:


コードをコピー コードは次のとおりです:
echo ~~9999999999999.99; // 276447231
echo Floor(9999999999999.99); 999999999999


10. do{}while(0) の (この記事は Qianfeng によって提供されています)
do{}while(0) には、goto やマクロ定義のコード ブロックを削除するなど、C/C++ で多くの魔法の用途があることがわかっています
したがって、同様に。 PHP では、do{}while(0) を使用して賢いアプリケーションを作成することもできます
コードをコピーします コードは次のとおりです:

do{
if(true) {
break;
}
if(true) {
break;
}
} while(false)
//
if(true) {
} else if(true) ) {
} else {
}

11. @ エラー抑制機能はできるだけ使用しないようにします
次のコード:
コードをコピーします コードは次のとおりです:

@func();

は以下と同等です (「PHP 原則の詳細な理解 (エラー抑制と埋め込み HTML)」を参照):
コードをコピー コードは次のとおりです:

$report = error_reporting(0);
func ();
error_reporting($report);

さらに、エラー抑制シンボルはいくつかの問題を引き起こす可能性があります。(http://www.jb51.net/article/27022.htm) を参照してください。エラーのデバッグが発生したときに問題が発生することもあります。
12. 再帰の使用を避けるようにしてください (この記事は Lazyboy からのものです)
再帰のパフォーマンスは懸念されますが、ほとんどの再帰は削除できます。コード

コードは次のとおりです:
function f( $n) { if ($n = 0) return 1; return $n * f($n - 1);
// になります。 :
$result = 1;
for ($y $result *= $y;


13. $_SERVER['REQUEST_TIME' を使用します。 ] time() の代わりに
time() を使用すると、関数呼び出しが発生します。時間の正確な値が必要ない場合は、代わりに $_SERVER['REQUEST_TIME'] を使用すると、操作を回避できます。 for 判定条件で (この記事はメッセージを残した匿名さんからのものです)
次のコード:
for($i=0; $i}
は strlen を次のようにします。ループ内で呼び出されるたびに、
for ($i=0, $j=strlen($str ;
コードをコピーします

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


if (preg_match("!^foo_!i ", "FoO_")) { }
// 次のように置き換えます:
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]、
そのため、中括弧を追加することをお勧めします:



コードをコピーします

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

echo "{$name}[2]";
//または
echo "${name}[2]";


17. エラーを示すには FALSE を使用し、そうでないことを示すには NULL を使用します。 -existence
操作クラスの関数の場合、失敗は「操作が失敗した」ことを意味する FALSE を返します。クエリ クラスの関数の場合、必要な値が必要な場合は NULL を返します。 、「見つからない」ことを示します。
http://www.bkjia.com/PHPjc/323227.html
www.bkjia.com

tru​​e

http://www.bkjia.com/PHPjc/323227.html
技術記事

最終更新日: 2011/04/02 1. 爆発後にリストを使用して特定のセグメント値を取得します: list(, $mid) =explode(';', $string); 2. is_null の代わりに NULL === を使用します: is_nullそして NULL === 終了...

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