现在用的方法是
这样做似乎很笨. 请问有什么简单的写法?
回复内容:
我有另一个想法: 既然你要的是在最后一个的时候执行一些别的, 也就是要做些特别的动作.
那我认为, 那最后一个元素不应该放在原来的数组列表里, 而应该单独提取出来, 于是有了如下的方法:
$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 < $$count){
$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 '最后一个';
}
高不高效还真是个问题