文档章节

php foreach

小张525
 小张525
发布于 09/24 10:46
字数 564
阅读 6
收藏 0
PHP
<?php
// 数组的引用
$a=array(1,2,3,4,5);

foreach($a as $key=>&$value)
{
	$value=$value*2;
}


print_r($a);
echo " $key -------------------$value\r\n";


/**
 *  如果数组中使用了引用, 
 *  有2种方式来处理被引用的值, 作为一个释放来对待处理
 *  1  使用reset()函数,将数组中的指针指向第一个位置,但是有一个问题是, 那个被引用的变量还是存在的,
 *     如果在循环外部, 使用了那个引用的变量,还是可以正常的输出数组的最后一个结果, 
 *  2  使用unset() 函数,可以释放一个变量, 
 *  3  问题的衍生, 如果循环中有变量被引用,  这个变量在循环外部可以被使用, 
 *     如果循环中, 没有变量被引用, 这个变量还可以在外部被引用吗,  主要是想考察变量的作用域. 
 * */

reset($a);
echo "$key  ++++++++++++  $value\r\n";


unset($value);
echo "$key ==============  $value\r\n";


/**
 *  通过如上的测试, 可以看到, foreach循环中的变量是全局的, 而不是一个局部的.
 *  最明显的就是  $key 变量的.
 * */


foreach($a as $k=>$v)
{
	$v=$v*2;
}


print_r($a);
/**
 *   没有加&符号的循环, 会输出一个临时的变量值.
 *
 * */
echo "$k @@@@@@@@@@@@@@@@@  $v \r\n";


//  临时数组的引用

foreach([1,2,3,4] as $key=>&$val)
{
	$val=$val*2;
}


// 此处会有一个语法错误, 主要是$val变量的问题, 
//	unset($val);



/** 
 *   总结 :
 *   如果foreach中有引用,
 *   1  如果程序的下文中还要继续使用该数组, 建议先reset调整数组中的指针, 避免循环的数据不完整,
 *   2  如果下文中,要使用那个被引用的变量, 建议先unset, 避免那个变量的初始值不是期望中的.
 *   3  如果下文中,要使用循环表达式中的值, 建议先unset,主要是key/value字段,  避免变量的初始值不是期望中的, 
 *
 * */




?>





OUTPUT:
Array
(
    [0] => 2
    [1] => 4
    [2] => 6
    [3] => 8
    [4] => 10
)
4 -------------------10
4  ++++++++++++  10

Notice: Undefined variable: value in F:\cygwin64\home\Administrator\code\demo16.php on line 30

Call Stack:
    0.0010     353768   1. {main}() F:\cygwin64\home\Administrator\code\demo16.php:0

4 ==============
Array
(
    [0] => 2
    [1] => 4
    [2] => 6
    [3] => 8
    [4] => 10
)
4 @@@@@@@@@@@@@@@@@  20

 

© 著作权归作者所有

共有 人打赏支持
小张525
粉丝 6
博文 103
码字总数 33503
作品 0
乌鲁木齐
程序员
模版引擎 smarty 怎样工作的 学习感悟 foreach

我没有仔细看smrty内部到底是怎么写的只是用了之后根据自己的想法,感觉是这样的,写点东西。当然只是针对foreach这一个函数,如果有错误希望您能提出来,因为这会给我莫大的帮助!! 关于 ...

FrankYang
2012/09/02
0
0
php数组循环输出实现方法【实例代码有误!!】

以前我们经常会想怎么来实现php数组循环输出来,本文章来介绍了利用php中常用的四种循环语句来实现单数组或多维数组循环输出方法. 在 PHP 中,我们可以使用下列循环语句: while 只要指定的条件...

adbug
2016/04/11
47
0
smarty中foreach的用法

{foreach},{foreachelse} {foreach} 用于像循环访问一个数字索引数组一样循环访问一个关联数组,与仅能访问数字索引数组的{section}不同,{foreach}的语法比 {section}的语法简单得多,但是作...

_大雁
2013/11/23
0
0
几种编程语言的foreach循环比较

几种编程语言的foreach循环比较 1.Java: JDK1.5后提供了foreach循环语法格式:for(type variableName : array|collection){variableName自动迭代访问每个元素;}实例 2 . PHP:php 4 引入了 ...

老六是Jerry
2013/02/26
0
0
PDOStatement::bindParam的一个陷阱

<?php $dbh = new PDO('mysql:host=localhost;dbname=test', "test"); $query = <<<QUERY INSERT INTO (, ) VALUES (:username, :password); QUERY; $statement = $dbh->prepare($query); $b......

snowing1990
2016/03/22
9
0

没有更多内容

加载失败,请刷新页面

加载更多

【大福利】极客时间专栏返现二维码大汇总

我已经购买了如下专栏,大家通过我的二维码你可以获得一定额度的返现! 然后,再给大家来个福利,只要你通过我的二维码购买,并且关注了【飞鱼说编程】公众号,可以加我微信或者私聊我,我再...

飞鱼说编程
今天
1
0
Spring5对比Spring3.2源码之容器的基本实现

最近看了《Spring源码深度解析》,该书是基于Spring3.2版本的,其中关于第二章容器的基本实现部分,目前spring5的实现方式已有较大改变。 Spring3.2的实现: public void testSimpleLoad(){...

Ilike_Java
今天
1
0
【王阳明心学语录】-001

1.“破山中贼易,破心中贼难。” 2.“夫万事万物之理不外于吾心。” 3.“心即理也。”“心外无理,心外无物,心外无事。” 4.“人心之得其正者即道心;道心之失其正者即人心。” 5.“无...

卯金刀GG
今天
2
0
OSChina 周三乱弹 —— 我们无法成为野兽

Osc乱弹歌单(2018)请戳(这里) 【今日歌曲】 @ _刚刚好: 霸王洗发水这波很骚 手机党少年们想听歌,请使劲儿戳(这里) hahahahahahh @嘻酱:居然忘了喝水。 让你喝可乐的话, 你准忘不了...

小小编辑
今天
10
0
vm GC 日志 配置及查看

-XX:+PrintGCDetails 打印 gc 日志 -XX:+PrintTenuringDistribution 监控晋升分布 -XX:+PrintGCTimeStamps 包含时间戳 -XX:+printGCDateStamps 包含时间 -Xloggc:<filename> 可以将数据保存为......

Canaan_
昨天
0
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部