Php foreach循环内的计算

Php foreach循环内的计算,php,foreach,laravel-5.1,Php,Foreach,Laravel 5.1,我在正确计算的循环中遇到了一个问题。下面是要翻转的原始数组。请参阅数组第二次dd的结果。 如您所见,值已经排序。这里是foreach循环内部的问题。即使我的预期结果很简单,我的逻辑似乎也很混乱。 请看下面的结果。希望任何人都能帮助我找出最简单的方法,只需达到预期的输出 我试图更改键1.401和1.501,以避免与索引的迭代冲突 array:5 [▼ "1.4" => 40 "1.401" => 42 "1.5" => 3

我在正确计算的循环中遇到了一个问题。下面是要翻转的原始数组。请参阅数组第二次dd的结果。 如您所见,值已经排序。这里是foreach循环内部的问题。即使我的预期结果很简单,我的逻辑似乎也很混乱。 请看下面的结果。希望任何人都能帮助我找出最简单的方法,只需达到预期的输出

我试图更改键1.401和1.501,以避免与索引的迭代冲突

  array:5 [▼
       "1.4"   => 40 
       "1.401" => 42 
       "1.5"   => 38 
       "1.501" => 39 
       "1.6"   => 41 
    ]
    $count1 = 0;
    foreach ($scho as $scholar_id2) {
        $scholar = Scholar::find($scholar_id2);
        $crits = New Criteria;
        $crits->scholar_id = $scholar->scholar_id;
        $crits->scholarship_id = $scholarship_id;
        $crits->save();
        $count1++;
    }
索引和值的翻转数组的结果

array:5 [▼
    "40" => 1.4
    "42" => 1.4
    "38" => 1.5
    "39" => 1.5
    "41" => 1.6
]
    $list1 = Criteria::where('scholarship_id','=',$scholarship->scholarship_id)->get();
    $all_id = [];
    foreach ($list1 as $id) {
        array_push($all_id, $id->criteria_id);
    }

        $last_scholar_gpa = 0;
        $percentage = 1.2;
        foreach ($all_id as $id2) {
        $crits = Criteria::find($id2);
        foreach ($all_list_GPA as $scholar_GPA) {

        if($percentage > 0.5 && $last_scholar_gpa != $scholar_GPA)
        $percentage = $percentage - 0.1;

        $total_points_two = $scholarship->scholarship_points_two * $percentage;
        $crits->criteria_gpa = $total_points_two;
        }

        $crits->save();

        $last_scholar_gpa = $scholar_GPA;

    }
这是奖学金的价值_点数_二=25

这应该是结果:

id    criteria_gpa
40          25.00
42          25.00
38          22.50
39          22.50
41          20.00
保存在数据库中的当前结果(但计算错误)


数组:5[▼    “1.4”=>40“1.4”=>42“1.5”=>38“1.5”=>39“1.6”=>41]
不是有效数组;你不能有重复的keys@MarkBaker我更新了我的帖子。我不清楚你的代码试图归档什么。
标准的作用是什么?什么是
$crits->save()存档?尽量减少并进一步简化您的示例
id    criteria_gpa
40          22.50
42          17.50
38          12.50
39          7.50
41          2.50