Için PHP'nin süre döngü dönüştürmek için bir for döngüsü

3 Cevap php

How can you convert the following while loop to a for -loop in PHP?

while( $row2 = pg_fetch_row( $result_tags )

While -loops are a source of errors for me. I see the while -loop as follows.

for ( $i = 0 ; $i < count(pg_fetch_row( $result_tags )) ; $i++ )

3 Cevap

O while bir for dönüştürmek olamaz.

for döngü artan döngüler için kullanılır. while döngüler bir durumdur false kadar kod çalıştırmak için kullanılır. En for döngüler kolayca while (for döngüler while döngüler sadece bir sözdizimsel geliştirmeleri) döngüler, ters dönüştürülebilir da her zaman mümkün değildir.

Aşağıdaki döngü düşünün:

while($row = pg_fetch_row($result)) { }

pg_fetch_row() bir falsy value dönene kadar bu döngü yürütülür.

Note: Böyle bir döngü için uygun sözdizimi olacaktır:

    while(($row = pg_fetch_row($result)) !== FALSE) { }

Ne yazık ki, bir for döngü kullanarak gelebilir yakın şudur:

for(; $row = pg_fetch_row($result) ;) {}

Zaten while döngü tam olarak aynı davranacaktır Hangi.

Note: Yine, böyle bir döngü için uygun sözdizimi olacaktır:

    for(; ($row = pg_fetch_row($result)) !== FALSE ;) { }

Ben geri kod gitmek ve tam olarak sorunun nedenini yerine while döngünün kullanımını suçlayarak bulmak gerektiğini düşünüyorum.

pg_fetch_row() sütun bir dizi döndürür, böylece onu count() kullanamazsınız.

Eğer pg_num_rows gibi kullanarak olacak bir for döngü kullanarak gelebilir yakın:

for($i = 0; $i < pg_num_rows($result); $i++) {
    $row = pg_fetch_row($result);
}

Ama şahsen ben bu gereksiz ayrıntılı ve daha fazla sorunlara açık bulmak.

Diğer yönde gidiyor, bir döngü için:

for (init; test; incr) {body;}

eşdeğerdir:

init;
while (test) {
    body;
    incr;
}

Bu döngü için bir döngü ise özel bir tür vardır. Şahsen ben size döngü hataları azaltacaktır için vermek ise döngü dönüştürme nasıl görmüyorum.

Neden bunu yapmak istiyorsun? Daha iyi bir yol / örneğini $i = 0 beyan ve ardından while döngünün sonunda onu artırmak için.