如何在PHP中仅使用foreach循环显示数组的First和Last元素

时间:2017-08-01 10:13:47

标签: php arrays loops foreach

我在一个数组中有学生考试成绩,并希望在学生选择时只显示第一个和最后一个考试成绩

如何在PHP中显示带有foreach循环的数组的第一个和最后一个元素。

到目前为止,我已经完成了以下方法,它对我有用,但似乎不是一种有效的方法

$y = 0; 

$student_total_sessions = $total_counter = sizeof($student_exam_session_data);

if($this->data['show_sessions'] != 'all_sessions')
{
    $student_total_sessions = ($student_total_sessions > 2) ? 2 : $student_total_sessions;
}

foreach ($student_exam_session_data as $student_session_id => $student_session_data) 
{ 
    $y++;
    // only show first and last in case show sessions is pre and post
    if($this->data['show_sessions'] != 'all_sessions' && $y > 1 && $y != $total_counter)
    {
        continue;
    }
    else
    {
        echo $student_session_data['exam_score'];
    }
} 

3 个答案:

答案 0 :(得分:2)

显示数组的第一个元素

echo $array[0];//in case of numeric array
echo reset($array);// in case of associative array

显示最后一个元素

echo $array[count($array)-1];//in case of numeric array
echo end($myArray);// in case of associative array

答案 1 :(得分:0)

如果您的数组具有唯一的数组值,那么确定第一个和最后一个元素是微不足道的:

foreach($array as $element) {
    if ($element === reset($array))
        echo 'FIRST ELEMENT!';

    if ($element === end($array))
        echo 'LAST ELEMENT!';
}

如果last和first元素在数组中只出现一次,则可以正常工作,否则会出现误报。因此,您必须比较键(它们肯定是唯一的)。

foreach($array as $key => $element) {
    reset($array);
    if ($key === key($array))
        echo 'FIRST ELEMENT!';

    end($array);
    if ($key === key($array))
        echo 'LAST ELEMENT!';
}

答案 2 :(得分:0)

前一段时间,我为此写了blog post。基本上:

// Go to start of array and get key, for later comparison
reset($array)
$firstkey = key($array);
// Go to end of array and get key, for later comparison
end($array);
$lastkey = key($array);

foreach ($array as $key => $element) {
  // If first element in array
  if ($key === $firstkey)
    echo 'FIRST ELEMENT = '.$element;

  // If last element in array
  if ($key === $lastkey)
    echo 'LAST ELEMENT = '.$element;
} // end foreach

对于PHP 7.3或更高版本,请使用array_key_firstarray_key_last

foreach($array as $key => $element) {
  // If first element in array
  if ($key === array_key_first($array))
    echo 'FIRST ELEMENT = '.$element;

  // If last element in array
  if ($key === array_key_last($array))
    echo 'LAST ELEMENT = '.$element;
} // end foreach