1

材料をデータベースに挿入するレシピ アプリのフォームがあります。まだ何も提出されていない場合、栄養価は「0」と表示されます。それ以外の場合は、post 値に更新されます。

栄養表示の私の構造は次のとおりです。

Calories:
  <?php if ($ingredientArray[calorieKey] >= 1)
  echo $ingredientArray[calorieKey];
    else echo 0; ?><br />
Protein:
  <?php if ($ingredientsArray[proteinKey] >= 1)
  echo $ingredientArray[proteinKey];
    else echo 0; ?><br />

...そして約20項目続きます。質問は:

1 つの if/else ステートメントを使用してコードをリファクタリングし、2 つの異なるフォーム (動的および静的) を表示する方が効率的でしょうか?それともそのままの方がよいでしょうか?

4

4 に答える 4

3

ここでの効率はまったく問題ではありません。これらの重複した if ステートメントが文字通り何百万もある場合を除き、ページの読み込みに時間がかかる他のすべての要因 (データベースからのデータのフェッチ、クライアントへの出力の送信、クライアントがブラウザでレンダリングするなど)。

したがって、コードをできるだけ読みやすく、保守しやすいものにすることに集中する必要があります。

パフォーマンスを向上させるために可読性を犠牲にする必要がある場合もあります...しかし、実際にパフォーマンスの問題を経験するまでは、その点からはまだ何マイルも離れています.

于 2011-10-28T07:10:28.877 に答える
2

必要なのは単なるループです。

$recipes = array('caloriesKey' => 'Calories', 'proteinKey' => 'Protein');
foreach($recipes as $key => $value) {
    echo $value . ($ingredientArray[$key] >= 1 ? $ingredientArray[$key] : 0) . '<br />';
}
于 2011-10-28T07:08:09.963 に答える
1
<?php echo $ingredientArray[calorieKey] >= 1 ? $ingredientArray[calorieKey] : 0 ?>

見た目が良くなります。

それについて心配するのをやめて、コードの純度に注意してください。

于 2011-10-28T07:06:36.240 に答える
0

$displayArray出力したい実際の値を保持する別の変数を作成するコードのブロックについてはどうですか? それを と呼びましょう。

次に、$displayArrayビューを構築しているときにループすることができます。

これは大きな違いのようには思えないかもしれませんが、次の人に何が起こっているのかを把握するのがはるかに簡単になり、同じ情報のセットを表示する方法を変更したり、交換したりすることがはるかに簡単になります.

于 2011-10-28T07:10:45.663 に答える