如何使用CodeIgniter

时间:2018-09-17 23:24:12

标签: php codeigniter

背景

我正在创建一个排名系统,该系统将检索一堆记录以比较其成绩,将其置于排名上并删除该记录以进行下一次比较。但是,我在如何删除尝试过的unset()记录时遇到了麻烦,但是它似乎也不起作用。

问题

这是我正在使用的代码。请注意,这只是我们正在做的伪代码,并不是为了避免问题引起混淆的实际代码。看一下这段代码:

// Retrive all the student records with grades.
$students = $this->grades->RetrieveRecords();

// Occupy slot.
$iterator=0;
$highest_index =0 ;
for($i=0;$i<5;$i++){

    // Search student for rank $i.

    foreach($students as $student)
    {
        // Some comparisons

        // consider we found the highest yet.
        if($highest<$student['grade']){

            // Store which index it is, because it will be deleted
            // on the next cycle if this $student['grade'] is indeed the highest on this cycle.
            $highest_index = $iterator;
        }
        $iterator+=1;
    }   

    // After getting the highest for rank $i. Delete that current record
    // from $students so on next cycle, it will be removed from the comparison.

    $unset($students[$highest_index]); // Does not work, any alternative? - Greg

    // Reset the foreach iterator for next comparison cycle.
    $iterator=0;

$unset($students[$highest_index]);是我们需要完成的工作,但不是。我们只需要从result_array()中删除一条特定记录,即$students。目前,我们没有其他选择,而是仍在Internet /文档中进行搜索。但是,我将在这里留下一些帮助。

如果我们在几个小时内得到解决方案,我们也会进行更新。

1 个答案:

答案 0 :(得分:1)

您可以使用array_filter

$students = array_filter($students, function($student) use($highest)
{
    return $student['grade'] < $highest;
});