【发布时间】:2010-04-07 07:53:47
【问题描述】:
for 循环和 PHP 中的foreach 循环有什么区别?
【问题讨论】:
-
我建议您查看有关这两种循环类型的一些文档。有一些根本的区别。或者你有什么具体问题?如果是这样,请在您的问题中澄清。
标签: php
for 循环和 PHP 中的foreach 循环有什么区别?
【问题讨论】:
标签: php
Foreach 非常适合遍历使用键和值的数组。
例如,如果我有一个名为“用户”的数组:
$User = array(
'name' => 'Bob',
'email' => 'bob@example.com',
'age' => 200
);
我可以很容易地遍历它并且仍然使用键:
foreach ($User as $key => $value) {
echo $key.' is '.$value.'<br />';
}
这会打印出来:
name is Bob
email is bob@example.com
age is 200
使用for 循环,更难保留键的使用。
当您在 PHP 中使用面向对象的实践时,您会发现您将几乎完全使用 foreach,而 for 循环仅用于数字或基于列表的事物。 foreach 还可以让您不必使用count($array) 来查找数组中的元素总数。
【讨论】:
foreach 专门用于遍历数组或对象的元素。
for 用于做某事……任何事……具有定义的开始条件、停止条件和迭代指令。
所以,for 可以用于更广泛的事情。事实上,没有第三个表达式——没有迭代指令——for 变成了while。
例子:
// Typical use of foreach
// It's strength is iterating over arrays & objects
$people = array("Tom", "Dick", "Hairy");
foreach ($people as $person) {
echo "$person <br/>"; }
现在你可以用for 做同样的事情,但何必呢?相反,for 可以用于完全不同的事情:
// Prints random names from array until Hairy is picked
for ($people = array("Tom", "Dick", "Hairy"); // initial condition
$people[0] != "Hairy"; // stop condition
shuffle($people) // iteration instructions
) {
echo "$people[0] <br/>";
}
初始条件在for循环之前完成一次,无论如何。如果停止条件评估为false,则循环将立即停止。更改指令在每个循环结束时执行。请注意,更改指令不必是增量。
下面是通过省略迭代指令将for 循环转换为while 循环的示例。
// Does the loop a random number of times.
// No thired expression
for ($rand = function() {$array = array(true, true, true, true, false);
shuffle($array);
return $array;
};
current($rand());
// empty third expression
) {
echo "I bring nothing to the table.<br/>";
}
【讨论】:
“for”循环为您提供了一个递增的数字(在其最常见的用途中),您可以使用任何您喜欢的方式。
“foreach”是一种特殊的构造,用于查看数组的连续成员。
例如,您可以使用“for”循环来创建执行“foreach”功能的内容。但是 foreach 使用较少的代码就可以做到这一点。
【讨论】:
for 仅在您定义它的情况下才会给您一个递增的数字。 for 中使用的表达式是任意的。
应该很简单
foreach 抽象了一些复杂性,通常更容易。每当我不需要知道数组的数字索引或 $key => $value 不会为我提供它时,我都会使用它。
for 是较旧的 C 风格,您必须首先执行 count(),以便知道循环需要多少次迭代。当您需要知道索引、倒数或在不同组中逐步遍历时,它很有用。
【讨论】:
for 中的 expr2 可以是您认为的任何结束条件。它不必是count()。例如,使用 Iterator 你可以做for($it->rewind(); $it->valid(); $it->next()) { /* ... */},但它也可以是回调、数据库查询等等。
for 循环只能与数字一起使用...
Foreach 基本上是执行以下操作的捷径
//Foreach method
foreach ($myArray as $myVar)
{
}
//Normal for equivalent
for ($i = 0; $i < $limit; $i++)
{
$myVar = $myArray[$i];
}
但也有其他问题,read this 相关文章
【讨论】:
foreach 用于迭代数组,仅此而已。for 是通用的基于计数器的循环
【讨论】:
更好更简单的答案是: Foreach 和 For 循环的区别:-
1. Foreach Loop:- Details are following.
a) Foreach loop used when you have an array, without array it's not worked.
b) Loop working at the end of array count. For example an array have 5 value
then loop run 5 times.
c) Syntax is following.
$array = array("Surinder","Rahul","Manoj","Bharti","Rana","Manish");
Foreach($array as $name ){
echo "Employe Name is ".$name.".";
}
This will print as following.
Employe Name is Surinder.
Employe Name is Rahul.
Employe Name is Manoj.
Employe Name is Bharti.
Employe Name is Rana.
Employe Name is Manish.
2. For Loop:- Details are following.
a) For loop used according to condition.
b) Loop working at the end of given condition.
c) Syntax is following.
$array = array("Surinder","Rahul","Manoj","Bharti","Rana","Manish");
For($i=0;$i<6;$i++){
echo "Employe Name is ".$array[$i].";
}
At the place of 6,You can used count array function.
This will print as following.
Employe Name is Surinder.
Employe Name is Rahul.
Employe Name is Manoj.
Employe Name is Bharti.
Employe Name is Rana.
Employe Name is Manish.
These are the difference between Foreach and for loop.
欲了解更多信息,请访问:http://ibmphp.blogspot.com/2012/10/difference-between-foreach-and-for-loop.html
【讨论】:
for 循环,但在 foreach 循环的情况下,我们不知道迭代次数。
foreach 循环也仅用于迭代 数组 和 对象。
您可以参考链接以更好地了解 for 和 foreach 循环之间的区别 -
https://www.quora.com/What-is-the-difference-between-for-and-foreach-in-php
【讨论】: