現在用的方法是
這樣做似乎很笨. 請問有什麼簡單的寫法?
回複內容:
我有另一個想法: 既然你要的是在最後一個的時候執行一些別的, 也就是要做些特別的動作.
那我認為, 那最後一個元素不應該放在原來的數組列表裡, 而應該單獨提取出來, 於是有了如下的方法:
$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 '最後一個';
}
高不高效還真是個問題