我正在使用一些参数编写SQL查询创建者。在Java中,只需通过数组长度检查当前数组位置,就可以很容易地从for循环中检测数组的最后一个元素。

for(int i=0; i< arr.length;i++){
     boolean isLastElem = i== (arr.length -1) ? true : false;        
}

在PHP中,它们有访问数组的非整数索引。因此必须使用foreach循环遍历数组。当您需要做出某些决定时(在我的例子中,在构建查询时附加或/和参数),这就会出现问题。

我相信一定有某种标准的方法来做这件事。

PHP中如何解决这个问题?


当前回答

您可以执行count()。

for ($i=0;$i<count(arr);$i++){
    $i == count(arr)-1 ? true : false;
}

或者如果你只寻找最后一个元素,你可以使用end()。

end(arr);

只返回最后一个元素。

而且,你可以用整数来索引php数组。它完全满意

arr[1];

其他回答

已经有很多答案了,但也有必要研究一下迭代器,特别是当它被要求使用标准方式时:

$arr = range(1, 3);

$it = new CachingIterator(new ArrayIterator($arr));
foreach($it as $key => $value)
{
  if (!$it->hasNext()) echo 'Last:';
  echo $value, "\n";
}

您可能也会发现一些在其他情况下更灵活的方法。

您可以执行count()。

for ($i=0;$i<count(arr);$i++){
    $i == count(arr)-1 ? true : false;
}

或者如果你只寻找最后一个元素,你可以使用end()。

end(arr);

只返回最后一个元素。

而且,你可以用整数来索引php数组。它完全满意

arr[1];

你可以直接得到最后一个索引:

$numItems = 计数($arr);

echo $ giba [numItems-1美元];

我有一种强烈的感觉,在这个“XY问题”的根源上,OP想要的只是implode()函数。

以下是我的解决方案: 简单地获取数组的计数,减去1(因为它们从0开始)。

$lastkey = count($array) - 1;
foreach($array as $k=>$a){
    if($k==$lastkey){
        /*do something*/
    }
}