2013-03-12 71 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