wlbk.net
当前位置:首页 >> php 引用 和 ForEACh的问题 >>

php 引用 和 ForEACh的问题

修改了一下,感觉这样你应该能理解的了了.感觉你在一个误区里面..第一次带&的foreach并没有改变数组的内容..而是最后一次循环$value引用了数组的最后一个项(可以测试一下,在第一次循环结束后unset($value),第二次循环的结果就不会有变化),在你第二个foreach也是使用的$value变量,这才造成了怪异的问题(可以换个变量,比如$val,输出的数组就不会有变化).第二个foreach是赋值给$value,但是这时的$value是引用的数组的最后一个值,所以,第一次循环把one赋值给了最后一个值,第二次把two赋值给最后一个,第三次也就是最后一个已经在第二次循环被赋值为two,所以仍然是two.

foreach($A as $B =>$C) $a是原数组 $b是索引键名 $c是键值 如: $array[1] = 'bbb'; $array[2] = 'ccc'; $array[3] = 'ddd'; foreach($A as $B =>$C) B分别输出 1 2 3,C分别输出 bbb ccc ddd

在参考手册可以找到这样一句话:“数组最后一个元素的 $value 引用在 foreach 循环之后仍会保留.建议使用 unset() 来将其销毁.” 也就是说,每次循环之后,进入下一次循环之初,$val都存放的是上一次循环的最终结果,在你的代码中也就是$data[$key]的引用.所以第二次之后的循环开始,实际上都是对$data进行了操作.

因为你只是对 $colors 数组的 每一个元素的 副本 进行大写转换了呀.修改如下:$i = 0;foreach ($colors as $color) { $color = strtoupper($color); $colors[$i] = $color ; $i ++;}print_r($colors);?>

foreach用来遍历数组的.比如$arr=array('k1'=>'v1','k2'=>'v2');foreach($arr as $v){ //变量$v为值.echo $v.'<br />'; //将分两行输出v1,v2}foreach($arr as $k=>$v){ //变量 $k 为键.变量$v为值.echo $k.'-'.$v.'<br />'; //将分两行输出k1-v1,k2-v2}

foreach 是php里用来遍历数组用的 具体用法下 //普通数组$arr = array(1,2,3,4,5);foreach($arr as $v){ echo $v."\r\n";}//键值数组$arr2 = array( "a" => 1, "b" => 2, "c" => 3,);foreach($arr2 as $k=>$v){ echo $k."==".$v."\r\n";}执行结果:

PHP 4 引入了 foreach 结构,和 Perl 以及其他语言很像.这只是一种遍历数组简便方法.foreach 仅能用于数组,当试图将其用于其它数据类型或者一个未初始化的变量时会产生错误.有两种语法,第二种比较次要但却是第一种的有用的扩展.

这个不属于php语法,而是smarty的语法smarty语法中 {foreach key=key item=item from=$arr}编译成php后就变成 foreach($arr as $key=>$item){$item.name} 编译后是 $item['name']

设一个计数变量$c=0;foreach (array as value){ if(c===0){ //是首个数组元素 } c++;}

<?php$obj = [];//你的对象$list = $obj['data']['list'];$num = array_sum(array_column($list, 'gift_num'));

相关文档
网站首页 | 网站地图
All rights reserved Powered by www.wlbk.net
copyright ©right 2010-2021。
内容来自网络,如有侵犯请联系客服。zhit325@qq.com