PHP8.1.21版本已发布
vue8.1.21版本已发布
jquery8.1.21版本已发布

PHP foreach 如何判断为数组最后一个最高效?

原创
2016-06-17 08:31:39 1245浏览

现在用的方法是
这样做似乎很笨. 请问有什么简单的写法?

回复内容:

我有另一个想法: 既然你要的是在最后一个的时候执行一些别的, 也就是要做些特别的动作.
那我认为, 那最后一个元素不应该放在原来的数组列表里, 而应该单独提取出来, 于是有了如下的方法:
$last = array_pop($list);
foreach($list as $v) do_common($v);
//特殊动作
do_special($last); 直接使用end($array)就可以取到最后一个值,可以使用php的指针函数
/**
 * Created by PhpStorm.
 * User: huage.org
 * Date: 2014-09-06
 * Time: 13:43
 */
$array1=array(1,2,3,4);
$array2=array("林志玲","刘涛","隋唐","朱茵");
$array3=array("刘涛",2,"朱茵",1,"林志玲");
echo end($array1);//将数组的内部指针指向最后一个单元,适用于所有数组
echo "
"
; echo end($array2); echo "
"
; echo end($array3);
$list = array('a', 'b', 'c');
foreach($list as $k=>$v) {
if($v != end($list)) {
// 不是最后一项
} else {
// 最后一项
}
} 把count($list)提到循环外面可以提高一下效率。 你确定你这个能实现?
$i是从0开始的,count($list)比$i大1,你觉得会输出“最后一个”么?$i初始值等于1吧。
对你这些代码有点建议,应该能提高效率.
把count($list)赋给另外一个值,如:$len, 把这个放在循环外面。判断条件就成了if($i != $len).
你可以这样判断:
$len = count($list);
$lastVal = end($list);
if($lastVal == $list[$len - 1]) {
echo '最后一个';
}
?> $count = count($result)-1;
foreach ( $result as $key => $v ) {
if(empty($v)) continue;
$sql .= "('";
$sql .= implode ( "','", $v );
$sql .= "')";
if($key $sql .= ",";
}
} 1 数组值不重复就判断 $val==end($array)
2 1楼说的换个思路处理
3 感觉代码比较简洁
$fruit = array('a' => 'apple', 'b' => 'banana', 'c' => 'cranberry');
reset($fruit);
while (list($key, $val) = each($fruit)) {
echo "$key => $val\n";
if(!current($fruit))echo '最后一个';
}

高不高效还真是个问题
声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn核实处理。