1

我的食谱应用程序有表格,可将配料插入数据库。如果尚未提交任何内容,则营养值显示为“0”。否则,它们会更新为帖子值。

我的营养展示结构是:

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 回答