我在一个数组中有学生考试成绩,并希望在学生选择时只显示第一个和最后一个考试成绩
如何在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'];
}
}
答案 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_first
和array_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