Maison  >  Article  >  développement back-end  >  PHP foreach 如何判断为数组最后一个最高效?

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

WBOY
WBOYoriginal
2016-06-17 08:31:391457parcourir

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

回复内容:

我有另一个想法: 既然你要的是在最后一个的时候执行一些别的, 也就是要做些特别的动作.
那我认为, 那最后一个元素不应该放在原来的数组列表里, 而应该单独提取出来, 于是有了如下的方法:
$last = array_pop($list);
foreach($list as $v) do_common($v);
//特殊动作
do_special($last); 直接使用end($array)就可以取到最后一个值,可以使用php的指针函数 PHP foreach 如何判断为数组最后一个最高效?
<code class="language-php"><span class="cp"><?php </span>
<span class="sd">/**</span>
<span class="sd"> * Created by PhpStorm.</span>
<span class="sd"> * User: huage.org</span>
<span class="sd"> * Date: 2014-09-06</span>
<span class="sd"> * Time: 13:43</span>
<span class="sd"> */</span>
<span class="nv">$array1</span><span class="o">=</span><span class="k">array</span><span class="p">(</span><span class="mi">1</span><span class="p">,</span><span class="mi">2</span><span class="p">,</span><span class="mi">3</span><span class="p">,</span><span class="mi">4</span><span class="p">);</span>
<span class="nv">$array2</span><span class="o">=</span><span class="k">array</span><span class="p">(</span><span class="s2">"林志玲"</span><span class="p">,</span><span class="s2">"刘涛"</span><span class="p">,</span><span class="s2">"隋唐"</span><span class="p">,</span><span class="s2">"朱茵"</span><span class="p">);</span>
<span class="nv">$array3</span><span class="o">=</span><span class="k">array</span><span class="p">(</span><span class="s2">"刘涛"</span><span class="p">,</span><span class="mi">2</span><span class="p">,</span><span class="s2">"朱茵"</span><span class="p">,</span><span class="mi">1</span><span class="p">,</span><span class="s2">"林志玲"</span><span class="p">);</span>
<span class="k">echo</span> <span class="nb">end</span><span class="p">(</span><span class="nv">$array1</span><span class="p">);</span><span class="c1">//将数组的内部指针指向最后一个单元,适用于所有数组</span>
<span class="k">echo</span> <span class="s2">"<br>"</span><span class="p">;</span>
<span class="k">echo</span> <span class="nb">end</span><span class="p">(</span><span class="nv">$array2</span><span class="p">);</span>
<span class="k">echo</span> <span class="s2">"<br>"</span><span class="p">;</span>
<span class="k">echo</span> <span class="nb">end</span><span class="p">(</span><span class="nv">$array3</span><span class="p">);</span>
</span></code>
$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 '最后一个';
}

高不高效还真是个问题
Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn