Home Backend Development PHP Tutorial Comparison of the differences between foreach and while loops in php_PHP tutorial

Comparison of the differences between foreach and while loops in php_PHP tutorial

Jul 13, 2016 pm 05:16 PM
foreach php while the difference and exist cycle Compare of

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
 代码如下 复制代码

for (;;)
{
break; // 由于某些原因
}

for (;;)

{

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
{
内含语句
}
while (条件);

4,do The last loop statement available in C# is the do statement. It is very similar to a while statement in that the condition is verified only after the initial loop.
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) {
 代码如下 复制代码
foreach ($array as $value) {
echo $value;
}
while (list($key) = each($array)) {
echo $array[$key];
}
echo $value;

}

while (list($key) = each($array)) {
 代码如下 复制代码
foreach ($array as $key => $value) {
echo $array[$key] = $value . '...';
}
while (list($key) = each($array)) {
$array[$key] = $array[$key] . '...';
}
echo $array[$key];

}


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 . '...';
}
while (list($key) = each($array)) {
$array[$key] = $array[$key] . '...';
}


Let us first test the time it takes to traverse a one-dimensional array with 50,000 subscripts:

Test platform:
 代码如下 复制代码

/*
* @ Author: Lilov
* @ Homepage: www.bKjia.c0m
* @ E-mail: zhongjiechao@gmail.com
*
*/

$arr = array();
for($i = 0; $i < 50000; $i++){
$arr[] = $i*rand(1000,9999);
}

function GetRunTime()
{
list($usec,$sec)=exp lode(" ",microtime());
return ((float)$usec+(float)$sec);
}
######################################
$time_start = GetRunTime();

for($i = 0; $i < count($arr); $i++){
$str .= $arr[$i];
}

$time_end = GetRunTime();
$time_used = $time_end - $time_start;

echo 'Used time of for:'.round($time_used, 7).'(s)

';
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)

';
######################################

?>

CPU: P-M 725 Memory: 512M Hard drive: 40G 5400 rpm OS: Windows xp SP2 WEB: apache 2.0.54 php5.0.4 Test code:
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.

www.bkjia.comtruehttp: //www.bkjia.com/PHPjc/628743.htmlTechArticleForeach and while loops in php, so what is the difference between foreach and while loops and their performance It will be better. Let me introduce to you the difference between foreach and while loop...
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 Article

Roblox: Bubble Gum Simulator Infinity - How To Get And Use Royal Keys
3 weeks ago By 尊渡假赌尊渡假赌尊渡假赌
Nordhold: Fusion System, Explained
3 weeks ago By 尊渡假赌尊渡假赌尊渡假赌
Mandragora: Whispers Of The Witch Tree - How To Unlock The Grappling Hook
3 weeks ago By 尊渡假赌尊渡假赌尊渡假赌

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

Java Tutorial
1666
14
PHP Tutorial
1273
29
C# Tutorial
1253
24
PHP and Python: Different Paradigms Explained PHP and Python: Different Paradigms Explained Apr 18, 2025 am 12:26 AM

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.

Choosing Between PHP and Python: A Guide Choosing Between PHP and Python: A Guide Apr 18, 2025 am 12:24 AM

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 and Python: A Deep Dive into Their History PHP and Python: A Deep Dive into Their History Apr 18, 2025 am 12:25 AM

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.

PHP's Impact: Web Development and Beyond PHP's Impact: Web Development and Beyond Apr 18, 2025 am 12:10 AM

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

The Continued Use of PHP: Reasons for Its Endurance The Continued Use of PHP: Reasons for Its Endurance Apr 19, 2025 am 12:23 AM

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.

The difference between laravel and thinkphp The difference between laravel and thinkphp Apr 18, 2025 pm 01:09 PM

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.

The Compatibility of IIS and PHP: A Deep Dive The Compatibility of IIS and PHP: A Deep Dive Apr 22, 2025 am 12:01 AM

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.

In back-end development, how to distinguish the responsibilities of the service layer and the dao layer? In back-end development, how to distinguish the responsibilities of the service layer and the dao layer? Apr 19, 2025 pm 01:51 PM

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...

See all articles