Php 不同的价格取决于一周中的哪一天
我正在学习PHP,我想根据一周中的哪一天为我的产品显示不同的价格。例如,周一的价格应该是50%的折扣,周三的价格应该是10%以上,以此类推。 我曾考虑使用带有switch语句的函数,但我无法使其工作。希望有人能给我一些建议Php 不同的价格取决于一周中的哪一天,php,Php,我正在学习PHP,我想根据一周中的哪一天为我的产品显示不同的价格。例如,周一的价格应该是50%的折扣,周三的价格应该是10%以上,以此类推。 我曾考虑使用带有switch语句的函数,但我无法使其工作。希望有人能给我一些建议 function day_of_week($day) { $day = "Monday"; switch ($day) { case "Monday": $key['price'] / 2;
function day_of_week($day) {
$day = "Monday";
switch ($day) {
case "Monday":
$key['price'] / 2;
break;
case "Wednesday":
$key['price'] * 1.1;
break;
case "Friday":
if($key['price'] >= 200) {
$key['price'] - 20;
}
}
}
Today's price:
<?php echo day_of_week($day); ?>
每周的功能日($day){
$day=“星期一”;
交换机(天){
案件“星期一”:
$key['price']/2;
打破
案件“星期三”:
$key['price']*1.1;
打破
案件“星期五”:
如果($key['price']>=200){
$key['price']-20;
}
}
}
今日价格:
如评论中所述,存在许多问题,如$day重新初始化和$key不在功能范围内以及不返回任何内容等
以下是工作代码:
另一种可能的方式
您可以创建一个作为控制器来执行此操作。它需要创建并使用来执行闭包
$priceChart = (object)
[
'monday' => function($price) {
return (int) $price / 2;
},
'wednesday' => function($price) {
return (int) $price * 1.1;
},
'friday' => function($price) {
return (int) $price > 200 ? (int) $price - 20 : (int) $price;
}
];
$price = 20.00; // Can be of type string
$currentDay = 'WednEsdAy'; // Capitals do not matter or use date('l');
$newPrice = isset($priceChart->{strtolower($currentDay)}) ? call_user_func_array($priceChart->{strtolower($currentDay)}, [$price]) : $price;
您可以在3v4l结束。不要在函数中为$day赋值。它将覆盖您传递给函数参数的任何内容。@LeanderIversen Hi!我把它放在函数之外,但没有任何变化。我应该把它放在哪里?很多问题。您正在覆盖$day
,因此它将始终是“星期一”。$key
从哪里来?您对$key['price']
执行的任何计算的结果都不会产生任何影响。您没有从函数返回结果。函数外部可以。您还需要一个return语句,例如return$key['price']/2。它正在工作!非常感谢!你能解释一下$key['price']=2000是如何工作的吗?我真的不明白。break代码>对于“星期三”并不是很必要,因为它前面有一个返回:-)我假设它存储在一个数组中,现在数组是在函数外部定义的,比如说全局,所以要访问该变量,需要通过函数传递它或调用全局$whatevervariableyounedineffunction;在函数的开头。只需注意一下$price
-变量。应该将其传递给函数(如此答案所示)。使用global
是一种反模式,应尽可能避免(如果您使用最佳实践编写代码,则或多或少应避免使用这种情况)。@MagnusErikssonglobal
常量可以,而使用global
非常量变量则应避免使用。:-)