php 表格数组遍历,php数组遍历

这篇博客探讨了PHP中foreach循环在遍历和修改数组时的工作原理。内容包括如何在遍历过程中改变数组元素的值,以及如何正确处理数组的引用和副本。文章强调了在遍历数组时,foreach操作的是数组的副本,而非原始数组,并提醒开发者在遍历过程中对数组元素的修改不会立即反映到原始数组上。此外,还提到了在循环中修改数组可能产生的意外行为以及如何通过引用符号`&`来直接修改数组元素。
摘要由CSDN通过智能技术生成

标签:php<?php

/*

* 此程序是对php数组的操作,主要是在遍历时修改数组的值

*/

/*

$array = array("A"=>1, "B"=>1, "C"=>1, "D"=>1);

foreach($array as $key => $value){

if($key == "B"){

$array["A"] = "CHANGE";

$array["D"] = "CHANGE";

print_r($array);

echo '
';

}

//如果想要打印CHNAGE,那么可以使用

//if($array[$key] == 'CHANGE')

//上面的取出的才是数组实际元素的值,使用$value取出的是array数组的原始值的副本

if($value === "CHANGE")

echo $value.'
';

}

print_r($array);

*/

/*

* 结果是

* Array ( [A] => CHANGE [B] => 1 [C] => 1 [D] => CHANGE )

Array ( [A] => CHANGE [B] => 1 [C] => 1 [D] => CHANGE )

*

*/

$array = array("A"=>1, "B"=>1, "C"=>1, "D"=>1);

foreach($array as $key => $value){

if($key == "B"){

$array["A"] = "CHANGE";

$array["D"] = "CHANGE";

print_r($array);

echo '
';

}

//如果想要打印CHNAGE,那么可以使用

if($array[$key] == 'CHANGE')

echo $value.'
';

}

print_r($array);

/*

* 结果是

* Array ( [A] => CHANGE [B] => 1 [C] => 1 [D] => CHANGE )

1(这里的1是数组原始的键对应的值)

Array ( [A] => CHANGE [B] => 1 [C] => 1 [D] => CHANGE )

*/

注意:除非数组被引用,foreach操作的是执行数组的一个拷贝,不是数组本身,而且在遍历的过程中对数组元素的修改不会影响到该副本(感觉就像在遍历之前就将数组进行了一次拷贝,遍历时操作的是数组副本)。foreach对数组指针有些副作用,除非对其重置,在

foreach 循环中或循环后都不要依赖数组指针的值。只要在foreach中,直接按照键取$array中的元素进行各种判断赋值操作就可以了。

参见php foreach手册

foreach 语法结构提供了遍历数组的简单方式。foreach仅能够应用于数组和对象,如果尝试应用于其他数据类型的变量,或者未初始化的变量将发出错误信息。有两种语法:

foreach (array_expression as $value)

statement

foreach (array_expression as $key => $value)

statement

第一种格式遍历给定的 array_expression 数组。每次循环中,当前单元的值被赋给 $value(创建一个副本) 并且数组内部的指针向前移一步(因此下一次循环中将会得到下一个单元)。

第二种格式做同样的事,只除了当前单元的键名也会在每次循环中被赋给变量 $key(创建一个副本)。

Note:

当foreach开始执行时,数组内部的指针会自动指向第一个单元。这意味着不需要在foreach循环之前调用。

由于 foreach 依赖内部数组指针,在循环中修改其值将可能导致意外的行为。

可以很容易地通过在 $value 之前加上 & 来修改数组的元素。此方法将以引用赋值而不是拷贝一个值。

$arr = array( 1 , 2 , 3 , 4 );

foreach ( $arr as & $value ) {

$value = $value * 2 ;

}

// $arr is now array(2, 4, 6, 8)

unset( $value ); // 最后取消掉引用

?>

注意:数组最后一个元素的 $value 引用在 foreach 循环之后仍会保留。建议使用

版权声明:本文为博主原创文章,未经博主允许不得转载。

标签:php

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值