背景
我正在创建一个排名系统,该系统将检索一堆记录以比较其成绩,将其置于排名上并删除该记录以进行下一次比较。但是,我在如何删除尝试过的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 /文档中进行搜索。但是,我将在这里留下一些帮助。
如果我们在几个小时内得到解决方案,我们也会进行更新。
答案 0 :(得分:1)
您可以使用array_filter:
$students = array_filter($students, function($student) use($highest)
{
return $student['grade'] < $highest;
});