带条件的php foreach循环?

带条件的php foreach循环?,php,Php,我只想在点大于级别时循环。 我想要的结果是“奖励0” 积分之和为80,因此大于50但小于100,因此只需要一次奖励 我试着这样做,但没有成功 $levels = [50, 100, 150, 200]; $points = 0; $rewards = []; foreach ($levels as $key => $level) { if($points >= $level) { $rewards[] = 'reward' . $key; }

我只想在点大于级别时循环。 我想要的结果是“奖励0”

积分之和为80,因此大于50但小于100,因此只需要一次奖励

我试着这样做,但没有成功

$levels = [50, 100, 150, 200];
$points = 0;
$rewards = [];


foreach ($levels as $key => $level) {

    if($points >= $level) { 
        $rewards[] = 'reward' . $key;
    }

    // 20, 40, 60, 80
    $points += 20; 

}

return $rewards;

如果我理解你的逻辑,那么这就是你想要的

<?php
$levels = [50, 100, 150, 200];
$points = 0;
$rewards = [];
$points = count($levels) * 20;
$rewards = array_filter($levels, function($n) use ($points){ 
    return $n < $points;
});
print_r($rewards);

如果我理解你的逻辑,那么这就是你想要的

<?php
$levels = [50, 100, 150, 200];
$points = 0;
$rewards = [];
$points = count($levels) * 20;
$rewards = array_filter($levels, function($n) use ($points){ 
    return $n < $points;
});
print_r($rewards);

请展开
不走运
。你有错误吗?这是函数吗<代码>返回
可能应该是
打印
?也不清楚
分数是80,所以大于50但小于100
您能更清楚地解释一下逻辑吗?我无法理解逻辑。在上面的代码中,执行将不会进入
if条件
。也就是说,
if
条件永远不会变为真。因此,
$rewards
数组将始终为空。@HarishST感谢您的评论。如何使其发挥作用?首先,请以更好的方式解释您的目标是什么,以便我们能够了解问题并为您提出解决方案。请详细介绍“不走运”
。你有错误吗?这是函数吗<代码>返回可能应该是
打印
?也不清楚
分数是80,所以大于50但小于100
您能更清楚地解释一下逻辑吗?我无法理解逻辑。在上面的代码中,执行将不会进入
if条件
。也就是说,
if
条件永远不会变为真。因此,
$rewards
数组将始终为空。@HarishST感谢您的评论。如何使其发挥作用?首先,请以更好的方式解释您的目标是什么,以便我们能够理解问题并为您提出解决方案。如果这是逻辑,为什么我们需要使用
foreach
?我们可以简单地丢弃foreach,并用
$points=count($levels)*20替换它。对吗?@HarishST先生,编辑:)@AlwaysSunny哈哈。我只是想确定有一个更好的方法进行OP。对他来说,这可能是新的。顺便说一下,谢谢你的编辑,先生你是第一个理解OP问题的人,这很好。如果这是逻辑,为什么我们需要使用
foreach
?我们可以简单地丢弃foreach
,并用
$points=count($levels)*20替换它。对吗?@HarishST先生,编辑:)@AlwaysSunny哈哈。我只是想确定有一个更好的方法进行OP。对他来说,这可能是新的。顺便说一下,谢谢你的编辑,先生你是第一个理解OP问题的人,这很好。