2012-01-02 14 views
1

この質問は特に私のPHP経験に関連していますが、他の言語には適用しない理由はありません。良いプログラミング実践:配列の参照

試験中にERROR_REPORTING(E_ALL);と設定した場合、私はNotice: Undefined offset: 0 in ChrisW/public_html/admin.php on line 122のような通知があることに気付きました。私のエラーの配列は、私の検証機能で$errorsArray = array($nameError, $emailError);ことで

echo $errorsArray[0] . '<label for="name" id="name-label">Your Name</label> 
<input id="name" name="name" value="' . $name . '" />'; 

:これは私が配列内のフォーム(塗りつぶされていない値、無効な値など)に関する警告を保存し、それらにアクセスし、約来ています。理想的な世界では

if(count($_POST) == 0) 
{ 
    $name=""; 
    $email=""; 
    $errorsArray = array(); 
    form_display($name, $number, $errorsArray); 
} 

  • は、問題についての通知をそれをしないページがロードされる1回目は、私は、フォームを表示しますか?
  • 私はそこだろう、私はそれを参照するとき、配列が空の場合$errorsArray("","");、または
  • を実行して、アレイは、私は、このようなecho (count($errorsArray[0])==0 ? "" : $errorsArray[0])echo $errorsArray[0]を変更することなどによって(チェックすべきか?

うまくいけば、初期化する必要がありますかなり白黒の答え - 私は長い議論を引き起こしたくありません!

+2

スタイルは非常にめったに黒くないか、白です。例外は、それが公式のスタイルガイドで言及されているときです...しかし、それでもそれは争われるでしょう。 – FakeRainBrigand

答えて

0

生産コードは、通知を提出してはならない(SHOULD NOT)。これはスクロール・ブラインドを引き起こします。あなたは無意味なメッセージをたくさん持っていることに慣れているので、重要なメッセージに気付かないでください(遅すぎるまで)。

ランダムコメント:

  • それはあなたがあなたのケースで、それは空の配列に$ errorsArrayを初期化することがあり、通知を避ける方法が本当に重要ではありません。
  • このような配列のエラーを保持するのは、おそらく最善の方法ではないでしょう。グローバル変数($ name、$ password)、数値でインデックス付けされた値($ errorsArray [0]、$ errorsArray [1])の2つのスタイルがビューに渡されます。最初の方が良いし、2番目の方がOKだし、いくつかの方が良いと思います($ data ['name'] ['errors'])。しかし、一般的なルールは:物事を行う一方法に固執することです。ポーランド人の古い言葉が「możebyćchujowo、byle jednakowo」(大まかに翻訳された:最も良い方法ではないかもしれないが、少なくともそれは統一されている)という。
+0

ありがとう - スクロールブラインドは良い点であり、すべての警告/通知を取り除く良い理由です。あなたの2番目の箇条書きのポイントは便利です - 私は貿易によってプログラマーではありません(あなたが推測しているかもしれません!) - 私は過去数年間に自分自身にプログラミングを教えている化学者です... – ChrisW

2

FakeRainBrigandから指摘されているように、絶対的な答えはありません。個人的には、その理由があり、無関係なエラーメッセージがあまりに多くあふれてしまうことを避けるために、おそらくたとえそれがコードを長くしていても、一見冗長に見えても。

PHPは、その矛盾と何かが暗黙的に行われる箇所、または潜在的なエラーがデフォルトで無視される場所(この場合など)のため、エラーが発生しやすい可能性があります。したがって、明示的に物事を行うのは賢明かもしれませんが、その意図については疑いの余地はありません。

関連する問題