我有我的食谱应用程序的表单,将成分插入数据库。如果尚未提交任何内容,则营养值显示为“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种不同的形式(动态和静态)会更有效吗,还是更好?
答案 0 :(得分:4)
这里的效率根本不重要。除非您有数百万个这些重复的if语句,否则处理时间实际上为零,与导致页面加载时间的所有其他因素相比(例如从数据库中获取数据,将输出发送到客户端,和客户端在浏览器中呈现它等。)
因此,您应该专注于使代码尽可能易读和可维护。
有些时候你应该牺牲可读性以获得更好的性能......但是直到你真正遇到性能问题,你仍然远离那一点。
答案 1 :(得分:2)
你需要的只是一个循环;
$recipes = array('caloriesKey' => 'Calories', 'proteinKey' => 'Protein');
foreach($recipes as $key => $value) {
echo $value . ($ingredientArray[$key] >= 1 ? $ingredientArray[$key] : 0) . '<br />';
}
答案 2 :(得分:1)
<?php echo $ingredientArray[calorieKey] >= 1 ? $ingredientArray[calorieKey] : 0 ?>
看起来更好。
不要担心它,并照顾代码纯度。
答案 3 :(得分:0)
创建另一个变量的代码块怎么样,让我们称之为$displayArray
,它将保存您想要打印的实际值?
然后,您可以在构建视图时循环浏览$displayArray
。
这可能看起来不是一个很大的区别,但它可以更容易地弄清楚下一个人正在发生什么,它可以让你改变,甚至换掉你显示同一组信息的方式更容易。