文档章节

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
乌鲁木齐
程序员
私信 提问
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
深入理解PHP原理之foreach

foreach是PHP中很常用的一个用作数组循环的控制语句。 因为它的方便和易用,自然也就在后端隐藏着很复杂的具体实现方式(对用户透明) 今天,我们就来一起分析分析,foreach是如何实现数组(对...

botkenni
2016/10/09
29
0

没有更多内容

加载失败,请刷新页面

加载更多

CompletableFuture get方法一直阻塞或抛出TimeoutException

问题描述 最近刚刚上线的服务突然抛出大量的TimeoutException,查询后发现是使用了CompletableFuture,并且在执行future.get(5, TimeUnit.SECONDS);时抛出了TimeoutException异常,导致接口响...

xiaolyuh
13分钟前
0
0
dubbo 搭建与使用

官网:http://dubbo.apache.org/en-us/ 一,安装监控中心(可以不安装) admin管理控制台,monitor监控中心 下载 bubbo ops 这个是新版的,需要node.js环境,我没有就用老版的了...

小兵胖胖
16分钟前
0
0
mac 下 mysql 8.0.13 安装并记录遇到的问题 以便以后查看

安装 官网mysql 下载地址 安装过程 省去 安装好之后 下载navicat 错误1 链接 遇到 mysql 2003 - Can't connect to MySQL server 错误, 解决方案 重启mysql 服务 #错误2 ERROR 1045: Acces...

杭州-IT攻城狮
昨天
5
0

中国龙-扬科
昨天
1
0
[Spring4.x]基于spring4.x纯注解的Web工程搭建

在前文中已经说明了如何基于 Spring4.x+ 版本开发纯注解的非web项目,链接如下: https://my.oschina.net/morpheusWB/blog/2985600 本文则主要说明,如何在Web项目中,"基于spring纯注解方式...

morpheusWB
昨天
17
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部