2013-03-12 79 views
0

請考慮以下數組。php check array索引超出範圍

$a['a'] = 1; 
$a['b'] = 2; 
$a['c'] = 3; 
$a['d'] = 4; 

,然後我很循環數組

foreach($a as $q => $x) 
{ 

    # Some operations .... 

    if(isLastElement == false ){ 
    #Want to do some more operation 
    } 
} 

我怎麼能知道當前位置last與否?

謝謝。

+1

作爲你的陣列是不是數字索引的數組,你可以使用一個整數,它遞增,並與您的陣列 – MatRt 2013-03-12 05:27:10

+0

參見[這個答案]的'count'(HTTP://計算器.com/questions/1070244/how-to-determine-the-first-and-last-iteration-in-a-foreach-loop#1070256),它建議使用計數器來識別循環集合中的最後一個元素。 – 2013-03-12 05:28:00

+0

@ user1073122在我的特定要求中不可能。 – Red 2013-03-12 05:31:10

回答

2

拿最後一個元素&比較一下。

$last_key = end(array_keys($a)); 

foreach($a as $q => $x) 
{ 
# Some operations .... 
if($q == $last_key){ 
    #Your last element 
    } 
} 
0
foreach (array_slice($a, 0, -1) as $q => $x) { 

} 
extraProcessing(array_slice($a, -1)); 

編輯:

我想,如果你想要做的最後一個元素上相同的處理第一array_slice是沒有必要的。其實這也不是最後一個。

foreach ($a as $q => $x) { 

} 
extraProcessing($q, $x); 

最後一個元素在循環後仍然可用。

0

您可以使用end()函數進行此操作。

+0

'end()'調用必須在循環之外,因爲它獲取最後一個值並將內部指針設置爲它而不是檢查它。 – Paul 2013-03-12 05:38:47

0
<?php 
$a['a'] = 1; 
$a['b'] = 2; 
$a['c'] = 3; 
$a['d'] = 4; 

$endkey= end(array_keys($a)); 

foreach($a as $q => $x) 
{ 

    # Some operations .... 

    if($endkey == $q ){ 
    #Want to do some more operation 
    echo 'last key = '.$q.' and value ='.$x; 
    } 
} 
?> 
+2

您應該檢查密鑰,而不是值,因爲該值不一定是唯一的。 – SomeSillyName 2013-03-12 05:36:47

+0

是的:)我會編輯它 – 2013-03-12 05:51:55