2016-09-01 29 views
6

Fetch_assoc'un nasıl/neden yaptığı gibi çalıştığını anlamaya çalışıyorum. kod aşağıdaki parça vardır: sorgu bir tablodan 3 satır döndüren Undersch fetch_assoc()

$results = $connectToDb->fetch("SELECT * FROM customer"); 
$resultsArray = $results->fetch_assoc(); 
print_r($resultsArray); //print_r 1 

while($row = $results->fetch_assoc()){ 
    print_r($row);  //print_r 2 
} 

. 1. print_r, neden sorgulanan verilerin yalnızca 1. satırını döndürür, ancak 2. print_r her 3 öğeyi de döndürür? Fetch_assoc'u bir döngü içine koymak, eylemi bir kereden fazla yapmasını nasıl söyler? Ben fetch_assoc bir ilişkisel dizi veya NULL döndürür okudum ama ben mantıklı ise, while döngü sonraki satır almak için ne zaman döngü "söyler" fetch_assoc anlamak için mücadele ediyorum?

Teşekkür ederiz.

+5

Neden bir döngüye bir şey koymak, bir kereden fazla bir şey meydana getiriyor? – Phylogenesis

+1

Bir süre ifadesinin anlamı basittir. While ifadesinin DOĞRU olarak değerlendirdiği sürece, PHP'ye iç içe geçmiş deyim (ler) i tekrar tekrar yürütmesini söyler. İfadenin değeri, döngü başlangıcında her seferinde kontrol edilir, bu nedenle iç içe geçmiş ifadelerin/ifadelerin yürütülmesi sırasında bu değer değişirse bile, iterasyonun sonuna kadar yürütme durdurulmaz (PHP her zaman ifadeleri çalıştırır döngüde bir yineleme). Bazen, while ifadesi en baştan FALSE olarak değerlendirilirse, iç içe geçmiş deyim (ler) bile bir kez bile çalıştırılmaz. – Daan

+0

http://php.net/manual/en/control-structures.while.php – RiggsFolly

cevap

10

kolay anlama deneyelim ve nasıl çalıştığını:

$results = $connectToDb->fetch("SELECT * FROM customer"); 

Bir değişken $results bir sorgu tarafından döndürülen satırların bir koleksiyona sahiptir. Koleksiyonun büyüklüğü 0'dan n'ye kadar olabilir.

$resultsArray = $results->fetch_assoc(); 

Bu satır, ilk öğeyi koleksiyondan getiriyor. Koleksiyon boşsa NULL dönecektir.

while($row = $results->fetch_assoc()){ 
} 

Aşağıdaki adımlarda ayrılmış olabilir:

  1. hesaplama $row = $results->fetch_assoc() ve elementlerin veya BOŞ ile dizisi döndürür.
  2. while için while yerine ve aşağıdaki ifadeleri alın: while(array(with elements)) veya while(NULL).
  3. while(array(with elements)) ise, True'daki koşul durumunu çözer ve bir yineleme gerçekleştirmesine izin verir.
  4. while(NULL) ise, False durumundaki zaman durumunu çözer ve döngüden çıkar.
İlgili konular