Home  >  Article  >  Backend Development  >  PHP foreach 如何判断为数组最后一个最高效?

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

WBOY
WBOYOriginal
2016-06-17 08:31:391455browse

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

回复内容:

我有另一个想法: 既然你要的是在最后一个的时候执行一些别的, 也就是要做些特别的动作.
那我认为, 那最后一个元素不应该放在原来的数组列表里, 而应该单独提取出来, 于是有了如下的方法:
$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 '最后一个';
}

高不高效还真是个问题
Statement:
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn