Table of Contents
php的循环与引用的一个坑,php循环引用
Home php教程 php手册 php的循环与引用的一个坑,php循环引用

php的循环与引用的一个坑,php循环引用

Jun 13, 2016 am 08:46 AM
while

php的循环与引用的一个坑,php循环引用

上代码

1

2

3

4

5

6

7

8

9

10

11

<span>$arr</span> = <span>array</span><span>(

    </span>'a'=> 'a11',

    'b'=> 'b22',

    'c'=> 'c33',<span>

); 

</span><span>foreach</span> (<span>$arr</span> <span>as</span> <span>$k</span>=>&<span>$v</span><span>){

    </span><span>//</span><span> Do somethind</span>

<span>}

</span><span>foreach</span> (<span>$arr</span> <span>as</span> <span>$k</span>=><span>$v</span><span>){

    </span><span>var_dump</span>(<span>$v</span><span>);

}</span>

Copy after login

这样的代码, var_dump 会输出什么? 各位可以试试, 答案

1

2

3

<span>string</span>(3) "a11"

<span>string</span>(3) "b22"

<span>string</span>(3) "b22"

Copy after login

结果里, 第三行变成了 key='b' 的value.  问题就出在第一个循环的引用.

今天就踩到了一个这样的坑, 查问题用了很久.  简单来说,  foreach循环使用的引用,  循环结束后有所保留. php.net 着重写了:

Warning

Reference of a $value and the last array element remain even after the foreach loop. It is recommended to destroy it by unset().

 

对于上面这个例子,  第一个循环结束后, $v引用仍然存在.  由于两个循环的变量命名一致,  第二个循环开始, $v 每次都会被赋值. 直到最后, $v 被设置成了

前一个元素的值.

原理很简单,  文档写的明明白白.  但如果工作中遇到相关的bug是很坑的,  定位需要很久.  还得需要写码的时候就注意:

1. 减少引用的使用

2. 如果需要在foreah使用引用,  应该用函数将封装起来

 

Statement of this Website
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

Hot AI Tools

Undresser.AI Undress

Undresser.AI Undress

AI-powered app for creating realistic nude photos

AI Clothes Remover

AI Clothes Remover

Online AI tool for removing clothes from photos.

Undress AI Tool

Undress AI Tool

Undress images for free

Clothoff.io

Clothoff.io

AI clothes remover

Video Face Swap

Video Face Swap

Swap faces in any video effortlessly with our completely free AI face swap tool!

Hot Tools

Notepad++7.3.1

Notepad++7.3.1

Easy-to-use and free code editor

SublimeText3 Chinese version

SublimeText3 Chinese version

Chinese version, very easy to use

Zend Studio 13.0.1

Zend Studio 13.0.1

Powerful PHP integrated development environment

Dreamweaver CS6

Dreamweaver CS6

Visual web development tools

SublimeText3 Mac version

SublimeText3 Mac version

God-level code editing software (SublimeText3)

In C language, what is the difference between while(1) and while(0)? In C language, what is the difference between while(1) and while(0)? Aug 31, 2023 am 10:45 AM

We know that in C language, 'while' keyword is used to define a loop that works based on the condition passed to the loop. Now, since the condition can have two values, true or false, the code inside the while block will be executed repeatedly if the condition is true and will not be executed if the condition is false. Now, by passing parameters to the while loop, we can differentiate between while(1) and while(0) because while(1) is a loop where the condition is always considered true and hence the code inside the block will start executing repeatedly. Furthermore, we can state that it is not 1 that is passed to the loop that makes the condition true, but if any non-zero integer is passed to the while loop, then it will be considered as the true condition, so

Is while a keyword in go language? Is while a keyword in go language? Jun 04, 2021 pm 05:01 PM

In the Go language, while is not a keyword. You can use the for statement plus break to achieve the effect of a while loop, such as "for {sum++ if sum>10{break}else{...}}". The go language has 25 keywords such as break, default, func, select, case, defer, go, map, else, goto, for, if, var, etc.

Usage of while Usage of while Sep 25, 2023 am 09:47 AM

The usage of while is "while condition: code block". The condition is an expression. When the condition is true, the code block is executed, and then it is judged again whether the condition is true. If it is true, the code block continues to be executed until the condition is false. . while is a commonly used loop control statement, used to repeatedly execute a block of code when certain conditions are met.

What are the common flow control structures in Python? What are the common flow control structures in Python? Jan 20, 2024 am 08:17 AM

What are the common flow control structures in Python? In Python, the flow control structure is an important tool used to determine the execution order of the program. They allow us to execute different blocks of code based on different conditions, or to execute a block of code repeatedly. The following will introduce common process control structures in Python and provide corresponding code examples. Conditional statements (if-else): Conditional statements allow us to execute different blocks of code based on different conditions. Its basic syntax is: if condition 1: #when condition

Detailed explanation of PHP While loop: Comprehensive mastery of loop principles and application scenarios Detailed explanation of PHP While loop: Comprehensive mastery of loop principles and application scenarios Apr 09, 2024 pm 03:27 PM

While loop is a control flow structure used to execute statements repeatedly until a condition is false. The principle is to check the condition, and if it is true, execute the loop body, and then check the condition until the condition is false. It is suitable for situations where an operation needs to be performed repeatedly, an operation needs to be performed when a condition is true, or a loop needs to be jumped out based on a condition. Practical examples include printing even numbers, calculating prime numbers, and using the break statement to break out of loops.

Detailed explanation of the function and usage of break keyword in PHP Detailed explanation of the function and usage of break keyword in PHP Jun 28, 2023 pm 06:39 PM

Detailed explanation of the role and usage of the break keyword in PHP In PHP programming, break is a control flow statement used to interrupt the current loop or switch statement and jump out of the loop or switch. This article will introduce in detail the role and usage of the break keyword. 1. Break in a loop In a loop structure, the function of break is to terminate the loop early and jump out of the loop body to execute the code after the loop. Common loop structures include for, while and do...while. in for loop

How to use the while statement in java How to use the while statement in java Apr 19, 2023 am 09:28 AM

Note 1. The Chinese meaning of the while keyword is when..., that is, when the condition is established, the corresponding code is executed in a loop. The while statement is the basic structure in the loop statement, and the syntax format is relatively simple. Execution process 2. When executing a while statement, first determine the loop condition. When the loop condition is false, the subsequent code of the while statement is directly executed. When the loop condition is true, the loop body code is executed and the loop condition is determined until the loop condition is not established. Example inti=1;intsum=0;while(i

Using PHP While Loop: Improve Program Efficiency and Readability Using PHP While Loop: Improve Program Efficiency and Readability Apr 09, 2024 pm 12:18 PM

PHPWhile loop improves efficiency and readability: By using termination conditions and encapsulating repeated code, while loops can reduce calculations, enhance readability, and simplify code.

See all articles