国产av日韩一区二区三区精品,成人性爱视频在线观看,国产,欧美,日韩,一区,www.成色av久久成人,2222eeee成人天堂

A 'pit' in PHP

Aug 08, 2016 am 09:27 AM
amp arr foreach gt

 Talk about a problem that you are likely to encounter at work - a quote from foreach

<span>$arr</span> = <span>range</span>(1,3<span>);
</span><span>//</span><span>[1,2,3]</span>

<span>foreach</span>(<span>$arr</span> <span>as</span> &<span>$val</span><span>) {
}

</span><span>foreach</span>(<span>$arr</span> <span>as</span> <span>$val</span><span>) {
}
</span><span>print_r</span>(<span>$arr</span><span>);
 </span>

 What does the above code output? The amazing thing is that it is as follows. I encountered this once at work. It took me a long time to figure out the reason, but I just found a solution. There are two solutions to this problem:

<span>Array</span><span>
(
    [</span>0] => 1<span>
    [</span>1] => 2<span>
    [</span>2] => 2<span>
)</span>

The following two methods can solve the above problem:

<span>//</span><span>方法1</span>
<span>foreach</span> (<span>$arr</span> <span>as</span> &<span>$value</span><span>) {
}
</span><span>unset</span>(<span>$value</span><span>);
</span><span>foreach</span> (<span>$arr</span> <span>as</span> <span>$value</span><span>) {
}
</span><span>print_r</span>(<span>$arr</span><span>);
</span><span>//</span><span>[1,2,3]

//方法2</span>
<span>foreach</span> (<span>$arr</span> <span>as</span> &<span>$value</span><span>) {
}
</span><span>foreach</span> (<span>$arr</span> <span>as</span> <span>$val</span><span>) {
}
</span><span>print_r</span>(<span>$arr</span><span>);
</span><span>//</span><span>[1,2,3]
//方法3</span>
<span>foreach</span> (<span>$arr</span> <span>as</span> &<span>$value</span><span>) {
}
</span><span>foreach</span> (<span>$arr</span> <span>as</span> &<span>$value</span><span>) {
}
</span><span>print_r</span>(<span>$arr</span><span>);
</span><span>//</span><span>[1,2,3]</span>

Method 1 can also be seen in the official manual http://php.net/manual/en/control-structures.foreach.php. There is a special tip in the article to remind you of this

Why are Method 2 and Method 3 OK? You will know after reading the following. In fact, it is the reference in "causing trouble". The &$value in foreach is a pointer variable pointing to an element in the array. Let's look at the following first. This It’s easy to understand. tmp is a reference to var, pointing to the storage space of var. When tmp changes, var also changes

<span>$var</span> = 123<span>;
</span><span>$tmp</span> = &<span>$var</span><span>;
</span><span>$tmp</span> = 200<span>;
</span><span>echo</span> <span>$var</span><span>;
</span><span>//</span><span>200</span>

Take a look at the stolen picture below (haha, the original link is posted below) to have a better understanding of the above

Okay, after this is ok, look at the following (I don’t know what software was used to draw the above picture, I can only draw it by hand, embarrassing~~), let’s look at the first foreach first:

Second foreach:

At this time, it is easy to know that in fact, in the second foreach loop, the value of the last element in the array is really changeable~~, from the first element to the second to last element. To solve this problem, it is very simple, cut off $ The relationship between value and the second foreach. Therefore, you can unset, change the variable name, or reset the pointer (method 3). Well, at this point, you can basically understand the problem at this point.

Okay, let’s take a look at the comments below the official document. It should be easy to understand

<?<span>php
</span><span>$arr1</span> = <span>array</span>("a" => 1, "b" => 2, "c" => 3<span>);
</span><span>$arr2</span> = <span>array</span>("x" => 4, "y" => 5, "z" => 6<span>);

</span><span>foreach</span> (<span>$arr1</span> <span>as</span> <span>$key</span> => &<span>$val</span><span>) {}
</span><span>foreach</span> (<span>$arr2</span> <span>as</span> <span>$key</span> => <span>$val</span><span>) {}

</span><span>var_dump</span>(<span>$arr1</span><span>);
</span><span>var_dump</span>(<span>$arr2</span><span>);
</span>?><span>

The output is</span>:
<span>array</span>(3) { ["a"]=> int(1) ["b"]=> int(2) ["c"]=> &int(6<span>) }
</span><span>array</span>(3) { ["x"]=> int(4) ["y"]=> int(5) ["z"]=> int(6) }

Reference article:

 http://www.cnblogs.com/CraryPrimitiveMan/p/4030748.html#3085766

http://www.jb51.net/article/39299.htm

 The copyright of this article belongs to the author iforever (luluyrt@163.com). Any form of reprinting is prohibited without the consent of the author. After reprinting the article, the author and the original text link must be given in an obvious position on the article page, otherwise legal liability will be reserved. right.

The above introduces a "pit" in PHP, including aspects of it. I hope it will be helpful to friends who are interested in PHP tutorials.

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

Undress AI Tool

Undress AI Tool

Undress images for free

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.

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)

Hot Topics

PHP Tutorial
1502
276
What are the differences between Huawei GT3 Pro and GT4? What are the differences between Huawei GT3 Pro and GT4? Dec 29, 2023 pm 02:27 PM

Many users will choose the Huawei brand when choosing smart watches. Among them, Huawei GT3pro and GT4 are very popular choices. Many users are curious about the difference between Huawei GT3pro and GT4. Let’s introduce the two to you. . What are the differences between Huawei GT3pro and GT4? 1. Appearance GT4: 46mm and 41mm, the material is glass mirror + stainless steel body + high-resolution fiber back shell. GT3pro: 46.6mm and 42.9mm, the material is sapphire glass + titanium body/ceramic body + ceramic back shell 2. Healthy GT4: Using the latest Huawei Truseen5.5+ algorithm, the results will be more accurate. GT3pro: Added ECG electrocardiogram and blood vessel and safety

What is the difference between using foreach and iterator to delete elements when traversing Java ArrayList? What is the difference between using foreach and iterator to delete elements when traversing Java ArrayList? Apr 27, 2023 pm 03:40 PM

1. The difference between Iterator and foreach is the polymorphic difference (the bottom layer of foreach is Iterator) Iterator is an interface type, it does not care about the type of collection or array; both for and foreach need to know the type of collection first, even the type of elements in the collection; 1. Why is it said that the bottom layer of foreach is the code written by Iterator: Decompiled code: 2. The difference between remove in foreach and iterator. First, look at the Alibaba Java Development Manual, but no error will be reported in case 1, and an error will be reported in case 2 (java. util.ConcurrentModificationException) first

How to determine the number of foreach loop in php How to determine the number of foreach loop in php Jul 10, 2023 pm 02:18 PM

?The steps for PHP to determine the number of the foreach loop: 1. Create an array of "$fruits"; 2. Create a counter variable "$counter" with an initial value of 0; 3. Use "foreach" to loop through the array, and Increase the value of the counter variable in the loop body, and then output each element and their index; 4. Output the value of the counter variable outside the "foreach" loop to confirm which element the loop reaches.

Fix: Snipping tool not working in Windows 11 Fix: Snipping tool not working in Windows 11 Aug 24, 2023 am 09:48 AM

Why Snipping Tool Not Working on Windows 11 Understanding the root cause of the problem can help find the right solution. Here are the top reasons why the Snipping Tool might not be working properly: Focus Assistant is On: This prevents the Snipping Tool from opening. Corrupted application: If the snipping tool crashes on launch, it might be corrupted. Outdated graphics drivers: Incompatible drivers may interfere with the snipping tool. Interference from other applications: Other running applications may conflict with the Snipping Tool. Certificate has expired: An error during the upgrade process may cause this issu simple solution. These are suitable for most users and do not require any special technical knowledge. 1. Update Windows and Microsoft Store apps

PHP returns an array with key values ??flipped PHP returns an array with key values ??flipped Mar 21, 2024 pm 02:10 PM

This article will explain in detail how PHP returns an array after key value flipping. The editor thinks it is quite practical, so I share it with you as a reference. I hope you can gain something after reading this article. PHP Key Value Flip Array Key value flip is an operation on an array that swaps the keys and values ??in the array to generate a new array with the original key as the value and the original value as the key. Implementation method In PHP, you can perform key-value flipping of an array through the following methods: array_flip() function: The array_flip() function is specially used for key-value flipping operations. It receives an array as argument and returns a new array with the keys and values ??swapped. $original_array=[

How to Fix Can't Connect to App Store Error on iPhone How to Fix Can't Connect to App Store Error on iPhone Jul 29, 2023 am 08:22 AM

Part 1: Initial Troubleshooting Steps Checking Apple’s System Status: Before delving into complex solutions, let’s start with the basics. The problem may not lie with your device; Apple's servers may be down. Visit Apple's System Status page to see if the AppStore is working properly. If there's a problem, all you can do is wait for Apple to fix it. Check your internet connection: Make sure you have a stable internet connection as the "Unable to connect to AppStore" issue can sometimes be attributed to a poor connection. Try switching between Wi-Fi and mobile data or resetting network settings (General > Reset > Reset Network Settings > Settings). Update your iOS version:

php提交表單通過后,彈出的對(duì)話框怎樣在當(dāng)前頁彈出,該如何解決 php提交表單通過后,彈出的對(duì)話框怎樣在當(dāng)前頁彈出,該如何解決 Jun 13, 2016 am 10:23 AM

php提交表單通過后,彈出的對(duì)話框怎樣在當(dāng)前頁彈出php提交表單通過后,彈出的對(duì)話框怎樣在當(dāng)前頁彈出而不是在空白頁彈出?想實(shí)現(xiàn)這樣的效果:而不是空白頁彈出:------解決方案--------------------如果你的驗(yàn)證用PHP在后端,那么就用Ajax;僅供參考:HTML code

What is the difference between foreach and for loop What is the difference between foreach and for loop Jan 05, 2023 pm 04:26 PM

Difference: 1. for loops through each data element through the index, while forEach loops through the data elements of the array through the JS underlying program; 2. for can terminate the execution of the loop through the break keyword, but forEach cannot; 3. for can control the execution of the loop by controlling the value of the loop variable, but forEach cannot; 4. for can call loop variables outside the loop, but forEach cannot call loop variables outside the loop; 5. The execution efficiency of for is higher than forEach.

See all articles