Home  >  Article  >  Backend Development  >  PHP中使用foreach统制数组的扫描

PHP中使用foreach统制数组的扫描

WBOY
WBOYOriginal
2016-06-13 11:53:031044browse

PHP中使用foreach控制数组的扫描

    <br />foreach ($c_f_arr as &$c_f) {  <br />                    if (trim($c_f[0])==trim($char)) {  <br />                        echo "$char is exist <br>";  <br />                        $c_f[1]++;  <br />                          <br />                        echo "hahaha <br>";  <br />                        echo "this is cf: $c_f[1] <br>";  <br />                    }  <br />                    else {  <br />                        echo "$char is not exist <br>";  <br />                        $c_new=array(trim($char),'1');  <br />                        array_push($c_f_arr, $c_new);  <br />                        $n++;  <br />                    }  <br />                }   <br />

实现的结果总是出现插入值之后,foreach就从头开始扫数组了,然后就会插入好几次。。。foreach是有这个规定吗?怎么破?还在考虑。。。
------解决方案--------------------
foreach 语句为数组或对象集合中的每个元素重复一个嵌入语句组。foreach 语句用于循环访问集合以获取所需信息,但不应用于更改集合内容以避免产生不可预知的副作用。

你的写法逻辑有问题,必须循环完成才能判断是否存在

你应该是想,当数组有相同的值,count增加,如果数组中没有这个值,则增加这个值。
可以这样写:
<br /><?php<br />$arr = array(array('a',0),array('b',0),array('c',0));<br />$char = 'a';<br />$is_exists = 0;<br />for($i=0,$len=count($arr); $i<$len; $i++){<br />    if($arr[$i][0] == $char){<br />        $arr[$i][1]++;<br />        $is_exists = 1;<br />        break;<br />    }<br />}<br /><br />if($is_exists==0){<br />    array_push($arr, array($char,0));<br />}<br /><br />print_r($arr);<br />?><br />


------解决方案--------------------
foreach用break跳出循环

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