2017-08-01 101 views
-1

foreach循環數組的最後一個元素我有一個數組學生的考試成績,並希望只顯示第一個和最後考試成績時,學生選擇的如何顯示只有第一,在PHP

如何顯示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

'array_shift','array_pop' –

+1

嘗試'current'和'end'功能 –

+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 
+2

如果數組是__not__ numeric_indexed? –

+0

@u_mulder是啊,我已經更新了我的回答 –

+0

@RAUSHANKUMAR我需要在foreach循環中找到它,如果要查看所有會話或第一個或最後一個會話。所以我想在最終用戶選擇要查看的第一個和最後一個會話的情況下跳過循環迭代。我在我的問題中提到過,我需要在foreach循環中執行此操作 –

0

如果你的數組有唯一的數組值,那麼確定第一個和最後一個元素很簡單:

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

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

這工作,如果最後和第一要素是剛剛出現在陣列一次,否則你會得到誤報。因此,你必須比較這些鍵(它們確實是唯一的)。

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

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

此方法仍然循環遍歷所有元素陣列。如果我只需要第一個和最後一個,我該如何跳過其餘的迭代 –

+0

您首先需要循環所有的值,然後檢查我的第一個示例,並從數組中回顯數組的第一個值和最後一個值。我給你的邏輯:) –