2010-04-07 40 views
10

Sự khác nhau giữa vòng lặp for và vòng lặp foreach trong PHP là gì?sự khác biệt giữa vòng lặp & cho mỗi vòng lặp trong php

+3

* (tham khảo) * http://de2.php.net/manual/en /control-structures.for.php và http://de2.php.net/manual/en/control-structures.foreach.php – Gordon

+1

Tôi đề nghị bạn xem một số tài liệu về cả hai loại vòng lặp. Có một số khác biệt cơ bản. Hay bạn có một vấn đề cụ thể? Nếu có, vui lòng làm rõ trong câu hỏi của bạn. –

Trả lời

1

Nó nên được khá đơn giản

foreach tóm tắt đi một số mức độ phức tạp và thường là dễ dàng hơn. Tôi sử dụng điều này bất cứ khi nào tôi không cần phải biết chỉ số số của mảng hoặc $key => $value sẽ không cung cấp cho tôi.

for là kiểu C cũ hơn, trước tiên bạn phải thực hiện count() để bạn biết số lần lặp mà vòng lặp yêu cầu. Nó rất hữu ích khi bạn cần phải biết chỉ mục, hoặc để đếm ngược hoặc bước qua các nhóm khác nhau.

+1

'expr2' trong' for' có thể là bất kỳ điều gì bạn xem là điều kiện kết thúc. Nó không phải là 'count()'. Ví dụ, với một Iterator bạn có thể làm 'for ($ it-> rewind(); $ it-> valid(); $ it-> next()) {/ * ... * /}', nhưng nó có thể cũng là một cuộc gọi lại, truy vấn db, bất cứ điều gì. – Gordon

+1

@Gordon: Tôi chuẩn bị nói điều tương tự. Mọi người ở đây dường như nghĩ rằng các vòng lặp 'for' chỉ có thể được sử dụng với các số ... –

+0

@Felix @Gordon Vâng, tôi đã cố gắng làm cho nó trở thành một ví dụ đơn giản để duyệt qua một mảng.Nhưng nhờ sự đầu vào của bạn. – alex

0

Foreach về cơ bản là một phím tắt để thực hiện những điều sau

//Foreach method 
foreach ($myArray as $myVar) 
{ 
} 

//Normal for equivalent 
for ($i = 0; $i < $limit; $i++) 
{ 
$myVar = $myArray[$i]; 
} 

Nhưng có những vấn đề khác nữa, read this bài viết về nó

13

Foreach là rất tốt cho lặp qua mảng đó sử dụng các phím và các giá trị.

Ví dụ, nếu tôi có một mảng gọi là 'Người dùng':

$User = array(
    'name' => 'Bob', 
    'email' => '[email protected]', 
    'age' => 200 
); 

tôi có thể lặp qua đó rất dễ dàng và vẫn tận dụng các phím:

foreach ($User as $key => $value) { 
    echo $key.' is '.$value.'<br />'; 
} 

này sẽ in ra :

name is Bob 
email is [email protected] 
age is 200 

Với vòng, việc giữ lại các phím sẽ khó khăn hơn .

Khi bạn đang sử dụng thực hành hướng đối tượng trong PHP, bạn sẽ thấy rằng bạn sẽ chỉ sử dụng foreach gần như hoàn toàn, chỉ với vòngcho số hoặc danh sách. foreach cũng ngăn bạn không phải sử dụng count($array) để tìm tổng số phần tử trong mảng.

0

foreach được sử dụng để lặp mảng và không có gì khác.
for là vòng lặp dựa trên mục đích chung

+1

Kể từ PHP 5, có thể lặp lại các đối tượng. – Gordon

1

Vòng lặp "cho" cung cấp cho bạn số gia tăng (sử dụng phổ biến nhất) mà bạn có thể sử dụng theo bất kỳ cách nào bạn muốn.

"foreach" là một cấu trúc đặc biệt được tạo ra để xem xét các thành viên liên tiếp của một mảng.

Ví dụ: bạn có thể sử dụng vòng lặp "for" để tạo thứ gì đó có chức năng "foreach". Nhưng foreach làm điều đó với mã ít yêu cầu hơn.

+1

'for' chỉ cung cấp cho bạn số gia tăng nếu bạn đã xác định số đó để làm như vậy. Các biểu thức được sử dụng trong một 'for' là tùy ý. – Gordon

3

foreach dành riêng cho việc lặp qua các phần tử của mảng hoặc đối tượng.

for là để làm điều gì đó ... mọi thứ ... có điều kiện bắt đầu, điều kiện dừng và hướng dẫn lặp lại được xác định.

Vì vậy, for có thể được sử dụng cho nhiều thứ rộng hơn. Trong thực tế, không có biểu thức thứ ba - không có hướng dẫn lặp lại - một for sẽ trở thành một while.

Ví dụ:

// Typical use of foreach 
// It's strength is iterating over arrays & objects 
$people = array("Tom", "Dick", "Hairy"); 

foreach ($people as $person) { 
    echo "$person <br/>"; } 

Working example

Bây giờ bạn có thể làm điều tương tự với for, nhưng tại sao bận tâm? Thay vào đó for thể được sử dụng cho những thứ hoàn toàn khác nhau:

// 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/>"; 
} 

Working example

Các điều kiện ban đầu được thực hiện trước khi for vòng một lần, không có vấn đề gì. Nếu điều kiện dừng đánh giá thành false vòng lặp sẽ bị dừng ngay lập tức. Các hướng dẫn thay đổi được thực hiện ở cuối mỗi vòng lặp. Lưu ý rằng hướng dẫn thay đổi không phải là số gia tăng.

Dưới đây là ví dụ về việc chuyển vòng lặp for thành vòng lặp while bằng cách bỏ qua các hướng dẫn lặp lại.

// 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/>"; 
} 

Working example

0

tốt hơn và câu trả lời dễ dàng là: Sự khác nhau giữa Foreach và Đối Loop: -

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. 

Để biết thêm thông đến đó: http://ibmphp.blogspot.com/2012/10/difference-between-foreach-and-for-loop.html

0

cho vòng lặp là được sử dụng nếu chúng ta biết đã bao nhiêu lần tập lệnh nên được chạy nhưng trong trường hợp của foreach vòng lặp, chúng tôi không có bất kỳ ý tưởng nào về số lần lặp lại.

Cũng foreach vòng lặp được sử dụng để lặp chỉ mảngđối tượng.

Bạn có thể tham khảo các liên kết để tìm hiểu rõ hơn về sự khác biệt giữa choforeach vòng lặp -

https://www.quora.com/What-is-the-difference-between-for-and-foreach-in-php

Các vấn đề liên quan