PHP foreach 如何判斷為數組最後一個最高效?

來源:互聯網
上載者:User
現在用的方法是
這樣做似乎很笨. 請問有什麼簡單的寫法?

回複內容:

我有另一個想法: 既然你要的是在最後一個的時候執行一些別的, 也就是要做些特別的動作.
那我認為, 那最後一個元素不應該放在原來的數組列表裡, 而應該單獨提取出來, 於是有了如下的方法:
$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 '最後一個';
}

高不高效還真是個問題
  • 聯繫我們

    該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

    如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

    A Free Trial That Lets You Build Big!

    Start building with 50+ products and up to 12 months usage for Elastic Compute Service

    • Sales Support

      1 on 1 presale consultation

    • After-Sales Support

      24/7 Technical Support 6 Free Tickets per Quarter Faster Response

    • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.