


Comparison of the differences between foreach and while loops in php_PHP tutorial
Foreach and while both loop in php, so what is the difference between foreach and while loop? Which one will have better performance? Let me introduce to you the difference and performance comparison between foreach and while loop. If you need to know more Students can refer to it.
In a while loop, Perl will read a line of input, store it in a variable and execute the loop body. Then, it goes back to find other input lines.
In a foreach loop, the entire line of input operators will be executed in the list context (because foreach needs to process the contents of the list line by line). Before the loop can start executing, it must read all the input.
When inputting large-capacity files, using foreach will occupy a lot of memory. The difference between the two will be very obvious. Therefore, the best approach is usually to use the shorthand for a while loop and let it process one line at a time.
Here are some information:
When you want to repeatedly execute certain statements or paragraphs, C# provides 4 different loop statement options for you to use depending on the current task:
. for statement
. foreach statement
. while statement
. do statement
1.for
The for statement is particularly useful when you know in advance how many times an containing statement should be executed. The regular syntax allows inner statements (and loop expressions) to be executed repeatedly while the condition is true:
for (initialization; condition; loop) contains statements
Please note that initialization, conditions, and loops are all optional. If you omit the condition, you can create an infinite loop that requires a jump statement (break or goto) to exit.
The code is as follows | Copy code | ||||
{ break; // for some reason} |
Another important point is that you can add multiple comma-separated statements to all three parameters of the for loop at the same time. For example, you can initialize two variables, have three conditionals, and repeat 4 variables.
2.foreach
A feature that has existed in the Visual Basic language for a long time is the ability to collect enumerations using the For Each statement. C# also has a command for collecting enumerations through the foreach statement:
foreach (type identifier in expression) containing statement
Loop variables are declared by type and identifier, and expressions correspond to collections. The loop variable represents the collection element for which the loop is running.
3.while
The while statement is exactly what you are looking for when you want to execute an enclosed statement 0 or more times:
while (condition) containing statement
The conditional statement - which is also a Boolean expression - controls the number of times the contained statement is executed. You can use break and continue statements to control the execution of statements in a while statement, which operates in exactly the same way as in a for statement.
代码如下 | 复制代码 |
do |
The code is as follows | Copy code |
do { Contains sentences } while (condition); |
The do statement guarantees that the contained statements have been executed at least once, and they continue to be executed as long as the condition evaluates to true. By using the break statement, you can force execution to exit the do block. If you want to skip this loop, use the continue statement.
Performance comparison
Foreach operates on a copy of the array (by copying the array), while while operates by moving the internal index of the array. Generally speaking, it is believed that while should be faster than foreach (because foreach first copies the array when it starts executing. , while while moves the internal indicator directly), but the result is just the opposite.
In the loop, the array "read" operation is performed, so foreach is faster than while:
The code is as follows | Copy code | ||||||||
foreach ($array as $value) {
} while (list($key) = each($array)) {
} |
The array "writing" operation is performed in the loop, so while is faster than foreach:
The code is as follows | Copy code |
foreach ($array as $key => $value) {
echo $array[$key] = $value . '...'; |
Let us first test the time it takes to traverse a one-dimensional array with 50,000 subscripts:
Test platform:
代码如下 | 复制代码 |
/* $arr = array(); function GetRunTime() for($i = 0; $i < count($arr); $i++){ $time_end = GetRunTime(); echo 'Used time of for:'.round($time_used, 7).'(s) while(list($key, $val) = each($arr)){ $time_end = GetRunTime(); echo 'Used time of while:'.round($time_used, 7).'(s) unset($str, $key, $val, $time_start, $time_end, $time_used); foreach($arr as $key => $val){ $time_end = GetRunTime(); ?> |
The code is as follows | Copy code |
'; unset($str, $time_start, $time_end, $time_used); ##################################### $time_start = GetRunTime(); while(list($key, $val) = each($arr)){ $str .= $val; } $time_end = GetRunTime(); $time_used = $time_end - $time_start; echo 'Used time of while:'.round($time_used, 7).'(s) '; unset($str, $key, $val, $time_start, $time_end, $time_used); ##################################### $time_start = GetRunTime(); foreach($arr as $key => $val){ $str .= $val; } $time_end = GetRunTime(); $time_used = $time_end - $time_start; echo 'Used time of foreach:'.round($time_used, 7).'(s) '; ##################################### ?> |
Test results:
Average the three test results:
Corresponds to for, while, foreach
respectively
0.1311650
0.1666853
0.1237440
After repeated tests, the results show that for traversing the same array, foreach is the fastest, and while is the slowest. foreach is about 20% ~ 30% faster than while. Then add the array subscript to 500000 and 5000000 and the test result is the same. But from a principle point of view, foreach operates on a copy of the array (by copying the array), while while operates by moving the internal index of the array. Generally speaking, it is believed that while should be faster than foreach (because foreach first executes the The array is copied in, while while moves the internal pointer directly), but the result is just the opposite. The reason should be that foreach is an internal implementation of PHP, while while is a general loop structure.
Summary: It is generally believed that foreach involves value copying and will be slower than while, but in fact, if you only read the array in a loop, then foreach is very fast. This is because PHP The copying mechanism adopted is "reference counting, copy-on-write". That is to say, even if a variable is copied in PHP, the initial form is still fundamentally in the form of a reference. Only when the content of the variable changes, will the variable be copied. Real replication will occur. The reason for doing this is to save memory consumption and also improve the efficiency of replication. From this point of view, the efficient read operation of foreach is not difficult to understand. In addition, since foreach is not suitable for processing array write operations, we can draw a conclusion that in most cases, code for array write operations in the form of foreach ($array as $key => $value) should be replaced with while (list($key) = each($array)). The speed difference produced by these techniques may not be obvious in small projects, but in large projects like frameworks, a single request often involves hundreds, thousands, or tens of thousands of array loop operations, and the difference will be significantly magnified.

Hot AI Tools

Undresser.AI Undress
AI-powered app for creating realistic nude photos

AI Clothes Remover
Online AI tool for removing clothes from photos.

Undress AI Tool
Undress images for free

Clothoff.io
AI clothes remover

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

Hot Article

Hot Tools

Notepad++7.3.1
Easy-to-use and free code editor

SublimeText3 Chinese version
Chinese version, very easy to use

Zend Studio 13.0.1
Powerful PHP integrated development environment

Dreamweaver CS6
Visual web development tools

SublimeText3 Mac version
God-level code editing software (SublimeText3)

Hot Topics











PHP is mainly procedural programming, but also supports object-oriented programming (OOP); Python supports a variety of paradigms, including OOP, functional and procedural programming. PHP is suitable for web development, and Python is suitable for a variety of applications such as data analysis and machine learning.

PHP is suitable for web development and rapid prototyping, and Python is suitable for data science and machine learning. 1.PHP is used for dynamic web development, with simple syntax and suitable for rapid development. 2. Python has concise syntax, is suitable for multiple fields, and has a strong library ecosystem.

PHP originated in 1994 and was developed by RasmusLerdorf. It was originally used to track website visitors and gradually evolved into a server-side scripting language and was widely used in web development. Python was developed by Guidovan Rossum in the late 1980s and was first released in 1991. It emphasizes code readability and simplicity, and is suitable for scientific computing, data analysis and other fields.

PHPhassignificantlyimpactedwebdevelopmentandextendsbeyondit.1)ItpowersmajorplatformslikeWordPressandexcelsindatabaseinteractions.2)PHP'sadaptabilityallowsittoscaleforlargeapplicationsusingframeworkslikeLaravel.3)Beyondweb,PHPisusedincommand-linescrip

What’s still popular is the ease of use, flexibility and a strong ecosystem. 1) Ease of use and simple syntax make it the first choice for beginners. 2) Closely integrated with web development, excellent interaction with HTTP requests and database. 3) The huge ecosystem provides a wealth of tools and libraries. 4) Active community and open source nature adapts them to new needs and technology trends.

Laravel and ThinkPHP are both popular PHP frameworks and have their own advantages and disadvantages in development. This article will compare the two in depth, highlighting their architecture, features, and performance differences to help developers make informed choices based on their specific project needs.

IIS and PHP are compatible and are implemented through FastCGI. 1.IIS forwards the .php file request to the FastCGI module through the configuration file. 2. The FastCGI module starts the PHP process to process requests to improve performance and stability. 3. In actual applications, you need to pay attention to configuration details, error debugging and performance optimization.

Discussing the hierarchical architecture in back-end development. In back-end development, hierarchical architecture is a common design pattern, usually including controller, service and dao three layers...
