如何使用内置PHP函数创建一个简单的3对2活动?

如何使用内置PHP函数创建一个简单的3对2活动?,php,Php,我是PHP的完全初学者,我想借助内置函数(如array_pop()、array_sum()或其他)创建一个简单的3对2活动,不幸的是,我遇到了麻烦 我已经创建了一个完全由披萨组成的阵列: $pizzaArray = [ "Hackaton" => [ "price" => 135, "ingredients" => "tomato sauce and magic", "randomComment" => "taste

我是PHP的完全初学者,我想借助内置函数(如array_pop()、array_sum()或其他)创建一个简单的3对2活动,不幸的是,我遇到了麻烦

我已经创建了一个完全由披萨组成的阵列:

$pizzaArray = [
    "Hackaton" => [
        "price" => 135,
        "ingredients" => "tomato sauce and magic",
        "randomComment" => "tastes like unicorns"
    ],
    "Plug-in" => [
        "price" => 145,
        "ingredients" => "sardeler och oliver",
        "randomComment" => "Ripasso"
    ],
    "Lulz" => [
        "price" => 150,
        "ingredients" => "tomato sauce and old socks",
        "randomComment" => "tastes like old socks"
    ]
];
请不要介意那些奇怪的值。唯一“重要”的是价格数组。 我基本上想要实现的是,如果一个客户要购买3个比萨饼,那么$totalSum将等于总额减去最便宜的比萨饼。 我试着认为,如果我能够编写以下代码,这是可以实现的:

$numberOfPizzas = count($pizzaarray);
$totalSum = 0;
if ($numberOfPizzas == 3) {
    //array_pop() the cheapest pizza
    // $totalSum =array_sum() price of remaining pizza

} else { 
    //$totalSum = array_sum() prices of all pizzas


但因为我不能像程序员一样思考,所以我的大脑根本不会输出符合逻辑的东西。这可以在一个简单的场景中实现吗?

您可以使用按价格对比萨饼进行排序,然后选择除最便宜的以外的所有比萨饼,然后计算最终价格:

$pizzas = [
  'Hackaton' => ['price' => 135, 'ingredients' => 'tomato sauce and magic', 'randomComment' => 'tastes like unicorns'],
  'Plug-in' => ['price' => 145, 'ingredients' => 'sardeler och oliver', 'randomComment' => 'Ripasso'],
  'Lulz' => ['price' => 150, 'ingredients' => 'tomato sauce and old socks', 'randomComment' => 'tastes like old socks']
];

uasort($pizzas, static function (array $pizza1, array $pizza2): int {
  return $pizza1['price'] <=> $pizza2['price'];
});

$pizzasMinusCheapest = array_slice($pizzas, 1);
// or, if you want the discount to apply for every 3 pizzas,
// $pizzasMinusCheapest = array_slice($pizzas, (int)(count($pizzas) / 3)) 

$finalPrice = array_reduce($pizzasMinusCheapest, static function (int $total, array $pizza): int {
  return $total + $pizza['price'];
}, 0);

echo $finalPrice;
$pizzas=[
“哈卡顿”=>[“价格”=>135,“配料”=>“番茄酱和魔术”,“随机评论”=>“味道像独角兽”],
'Plug-in'=>['price'=>145,'Components'=>'sardeler och oliver','randomComment'=>'Ripasso'],
“Lulz”=>[“价格”=>150,“配料”=>“番茄酱和旧袜子”,“随机评论”=>“味道像旧袜子”]
];
uasort($pizzas,静态函数(数组$pizza1,数组$pizza2):int{
返回$pizza1['price']$pizza2['price'];
});
$pizzasMinusCheapest=阵列片($pizzas,1);
//或者,如果你想每3个比萨饼申请一次折扣,
//$pizzasMinusCheapest=数组_切片($pizzas,(int)(计数($pizzas)/3))
$finalPrice=array\u reduce($pizzasminus)最便宜的静态函数(int$total,array$pizza):int{
返回$total+$pizza['price'];
}, 0);
echo$finalPrice;
演示:

奖金-使用PHP7.4的短闭包:

uasort($pizzas, fn(array $pizza1, array $pizza2): int => $pizza1['price'] <=> $pizza2['price']);
$pizzasMinusCheapest = array_slice($pizzas, 1);
$finalPrice = array_reduce($pizzasMinusCheapest, fn(int $total, array $pizza): int => $total + $pizza['price'], 0);
uasort($pizzas,fn(数组$pizza1,数组$pizza2):int=>$pizza1['price']$pizza2['price']);
$pizzasMinusCheapest=阵列片($pizzas,1);
$finalPrice=array\u reduce($pizzasMinusCheapest,fn(int$total,array$pizza):int=>$total+pizza['price',0);
您可以使用按价格对比萨饼进行排序,然后选择除最便宜的以外的所有比萨饼,然后计算最终价格:

$pizzas = [
  'Hackaton' => ['price' => 135, 'ingredients' => 'tomato sauce and magic', 'randomComment' => 'tastes like unicorns'],
  'Plug-in' => ['price' => 145, 'ingredients' => 'sardeler och oliver', 'randomComment' => 'Ripasso'],
  'Lulz' => ['price' => 150, 'ingredients' => 'tomato sauce and old socks', 'randomComment' => 'tastes like old socks']
];

uasort($pizzas, static function (array $pizza1, array $pizza2): int {
  return $pizza1['price'] <=> $pizza2['price'];
});

$pizzasMinusCheapest = array_slice($pizzas, 1);
// or, if you want the discount to apply for every 3 pizzas,
// $pizzasMinusCheapest = array_slice($pizzas, (int)(count($pizzas) / 3)) 

$finalPrice = array_reduce($pizzasMinusCheapest, static function (int $total, array $pizza): int {
  return $total + $pizza['price'];
}, 0);

echo $finalPrice;
$pizzas=[
“哈卡顿”=>[“价格”=>135,“配料”=>“番茄酱和魔术”,“随机评论”=>“味道像独角兽”],
'Plug-in'=>['price'=>145,'Components'=>'sardeler och oliver','randomComment'=>'Ripasso'],
“Lulz”=>[“价格”=>150,“配料”=>“番茄酱和旧袜子”,“随机评论”=>“味道像旧袜子”]
];
uasort($pizzas,静态函数(数组$pizza1,数组$pizza2):int{
返回$pizza1['price']$pizza2['price'];
});
$pizzasMinusCheapest=阵列片($pizzas,1);
//或者,如果你想每3个比萨饼申请一次折扣,
//$pizzasMinusCheapest=数组_切片($pizzas,(int)(计数($pizzas)/3))
$finalPrice=array\u reduce($pizzasminus)最便宜的静态函数(int$total,array$pizza):int{
返回$total+$pizza['price'];
}, 0);
echo$finalPrice;
演示:

奖金-使用PHP7.4的短闭包:

uasort($pizzas, fn(array $pizza1, array $pizza2): int => $pizza1['price'] <=> $pizza2['price']);
$pizzasMinusCheapest = array_slice($pizzas, 1);
$finalPrice = array_reduce($pizzasMinusCheapest, fn(int $total, array $pizza): int => $total + $pizza['price'], 0);
uasort($pizzas,fn(数组$pizza1,数组$pizza2):int=>$pizza1['price']$pizza2['price']);
$pizzasMinusCheapest=阵列片($pizzas,1);
$finalPrice=array\u reduce($pizzasMinusCheapest,fn(int$total,array$pizza):int=>$total+pizza['price',0);

如果有人点了6个比萨,他们会只买4个最贵的吗?如果有人点了6个比萨,他们会只买4个最贵的吗?我确实认为在比萨上使用
数组切片是合适的!我确实认为在比萨饼上使用
array\u slice
是合适的!