タイトル: 次のコード内のエラーを見つけてください:
関数 baz($y $z) {
$x = 新しい配列();
$x[売上] = 60;
$x[利益] = 20:
foreach($x as $key = $value) {
echo $key+" "+$value+"
";
}
}
あなたは何個見つけることができますか?
関数パラメータのリストにカンマが欠落している場合、「new Array()」が間違っている場合、セミコロンの代わりにコロンが行末に使用されている場合、「=>」が foreach で使用されていない場合、および「 +" は文字列を連結するために使用されます。おめでとうございます。すべてのエラーが見つかり、PHP プログラミングの基本をマスターしました。
では、私がこの質問にどう答えたかをお話しましょう。確かに上記の問題を特定しましたが、さらに一歩進めました。たとえば、配列インデックス内の文字列が引用符で囲まれていないことに気付いたことがありますか?これは重大なエラーを引き起こすわけではありませんが、コーディング エラーです。また、エコー行では一重引用符ではなく二重引用符が使用されていることに気づきましたか? PHP 開始フラグの短縮形を使用していますか? 「
」の代わりに「
」を使用しますか?
実際のエラーを見つけた後、上記で見つけた問題の後にコメントを追加しました。それだけで回答が「正しい」から「示唆に富む」に変わり、私の応募書類に多くのポイントが与えられたため、彼らは私を採用することに決めました。 (しかし、最終的には断ったのは、私はタイトな生活ペースが好きで、電気通信市場に関わる会社ではなく、自分の PHP スキルを顧客に捧げるためです。自分のスキルを披露するステージが必要です。)
それでは、私が書いた PHP プログラミングの 10 の習慣を見てみましょう:
1. 一重引用符で囲まれた文字列を使用します
二重引用符を使用して文字列を囲むと、PHP インタープリターは変数置換、エスケープ、および「n」などのその他の操作を実行します。基本的な文字列を出力したいだけの場合は、一重引用符を使用すると、リソースが節約されます。もちろん、変数置換を実行する必要がある場合は二重引用符を使用する必要がありますが、それ以外の場合は一重引用符を使用します。
2. 文字列
の出力
次のステートメントのうち、最も速く実行されるのはどれだと思いますか?
print "こんにちは、私の名前は $a です。私は $b";
echo "こんにちは、私の名前は $a です。私は $b";
echo "こんにちは、私の名前は ".$a."。私は ".$b;
echo "こんにちは、私の名前は ",$a," です。私は ",$b;
echo 'こんにちは、私の名前は ',$a'です。私は ',$b;
奇妙に思われるかもしれませんが、実際には最後のものが最も速く実行されます。 print は echo より遅く、文字列内の変数を置換するときは遅く、文字列の連結はカンマで連結するよりも遅くなります。 最後の文は、最初の習慣を具体化したものです。したがって、文字列内で変数の置換を行わないことにより、プログラムの実行が速くなるだけでなく、構文の強調表示 (変数が強調表示される) を使用すると、どのエディターでもコードが読みやすくなります。エコーパラメータはカンマで連結でき、文字列連結よりも高速であることを知っている人はほとんどいません。最後に、最初の習慣を使用すると、このステートメントは非常に優れたものになります。
3. 配列インデックスでは一重引用符
を使用します
上記のテスト質問でわかるように、$x[sales] は技術的に間違っており、インデックスは括弧で囲む必要がある、つまり $x['sales'] であることを指摘しました。これは、PHP が引用符で囲まれていないインデックスを「裸の」文字列として認識し、定数として解釈するためです。定数の定義が見つからない場合は、文字列として解釈されるため、このステートメントは実行可能です。インデックスを囲むことでこの部分の作業を節約でき、将来この文字列を使用して定数を定義する場合でもエラーは発生しません。私自身はテストしていませんが、これを実行すると約 7 倍高速になると聞いたことがあります。このトピックの詳細については、PHP マニュアルの「配列」の章の「配列でできることとできないこと」のセクションを参照してください。
4. 開始記号
の略語は使用しないでください。
そういう表記を使っているのでしょうか? 「」は非常に悪い記号であり、XML インタプリタとの競合を引き起こす可能性があります。このコードを公開したら、ユーザーは php.ini ファイルを変更して、このシンボルのサポートを有効にする必要があります。したがって、このフォームを使用する理由はまったくありません。 「