作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
所以我有这段代码...(对不起)
(我的问题需要更多“细节”,因为代码太长了)基本上它需要用户拥抱计数,并每隔一段时间给他们一个新的报价作为奖励,但间隔是不规则的。
if ($hugs > 0) {
$quote = $quotes[0];
}
if ($hugs > 5) {
$quote = $quotes[1];
}
if ($hugs > 10) {
$quote = $quotes[2];
}
if ($hugs > 20) {
$quote = $quotes[3];
}
if ($hugs > 50) {
$quote = $quotes[4];
}
if ($hugs > 100) {
$quote = $quotes[5];
}
if ($hugs > 150) {
$quote = $quotes[6];
}
if ($hugs > 200) {
$quote = $quotes[7];
}
if ($hugs > 250) {
$quote = $quotes[8];
}
if ($hugs > 500) {
$quote = $quotes[9];
}
if ($hugs > 750) {
$quote = $quotes[10];
}
if ($hugs > 1000) {
$quote = $quotes[11];
}
if ($hugs > 1500) {
$quote = $quotes[12];
}
由于拥抱计数之间的间隔是不规则的,有没有办法将其压缩下来?
TIA。
最佳答案
你当然可以浓缩它!一种方法是构建关联数组(键值对),如下例所示。
/**
* Returns a quote based on the number of hugs
*
* @param int $hugs
* @param array $quotes
*
* @return string|null
*/
function getQuoteFromHugs($hugs, $quotes) {
$hugs_quotes = array(
1500 => $quotes[12],
1000 => $quotes[11],
750 => $quotes[10],
500 => $quotes[9],
250 => $quotes[8],
200 => $quotes[7],
150 => $quotes[6],
100 => $quotes[5],
50 => $quotes[4],
20 => $quotes[3],
10 => $quotes[2],
5 => $quotes[1],
0 => $quotes[0],
);
foreach($hugs_quotes as $hug_minimum => $quote) {
if($hugs > $hug_minimum) {
return $quote;
}
}
return null;
}
// Usage
$quote = getQuoteFromHugs($hugs, $quotes);
这会按顺序遍历每个键值对,并查看您的 $hugs 参数是否大于键。如果是,它返回与该键关联的值。
关于php - 多个 If 冷凝 - PHP,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37306571/
我是一名优秀的程序员,十分优秀!