2015-05-14 163 views
0

我一直在努力學習過去一週的PHP,並且我陷入了一個特定的問題。請原諒我題目不佳,因爲我還沒有掌握行話。在FOR循環中迭代FOREACH數組

這裏是我的代碼:

$query = "SELECT $tablefields FROM $tablename"; 
$sth = $dbconn->prepare($query); 

for ($x = 1; $x <=3; $x++){ 
    echo '<br /> This is an iteration ',$x; 

     $sth->execute(); 
     foreach ($sth->fetchall() as $row) 
     { 
     $results = $row[$tablefields]; 
     echo $results, '<br />' 
     ; 
     } 

} 

我想爲下面的代碼輸出:

This is iteration No. 1 
Apple 
Orange 
Banana 
Kiwi 

This is iteration No. 2 
Apple 
Orange 
Banana 
Kiwi 

This is iteration No. 3 
Apple 
Orange 
Banana 
Kiwi 

現在,上面的代碼做這項工作就好了,但是當我想增加迭代$ x < = 20,水果選項爲20項,頁面渲染速度明顯放慢。我想知道是否因爲代碼查詢MySQL數據庫20次?有沒有更好的方式來構建代碼,以便更高效?

回答

0

因爲你做了20次MySQL查詢。您可以緩存結果,然後使用緩存進行循環。例如:

$query = "SELECT $tablefields FROM $tablename"; 
$sth = $dbconn->prepare($query); 
$sth->execute(); 

$result = ""; 
foreach ($sth->fetchall() as $row) { 
    $result .= $row[$tablefields] . "<br>"; 
} 

for ($x = 1; $x <=3; $x++){ 
    echo '<br /> This is an iteration ' . $x; 
    echo $result; 
} 
+0

太棒了!我不知道「。=」操作符....我今天學到的新東西=)順便說一下,是否有連接操作符「。」的具體原因。 (點)在連接字符串時用於「,」(逗號)?我發現在解析大量文本時,逗號函數在點運算符上速度更快。 – jasonlcy

1
$x=1; 
foreach ($sth->fetchall() as $row){ 
     echo '<br /> This is an iteration ',$x; 
     $results = $row[$tablefields]; 
     echo $results; 
     $x++; 
} 

而不是使用for循環和foreach在一起你可以使用上面的代碼。

+0

嗨!感謝您提供的解決方案,但它不會輸出我想要的方式=) – jasonlcy

+0

您可以粘貼輸出 –

+0

嗨Sameer,我想要的輸出已經在問題中。無論是invisal還是Coder匿名都給了我可行的解決方案! – jasonlcy

0

這裏是東西..

爲什麼要三次執行查詢或每次循環運行的我不知道。但這是對你的代碼的小改進。看一看。

$query = "SELECT $tablefields FROM $tablename"; 
$sth = $dbconn->prepare($query); 
$sth->execute(); 
$data = ""; 
foreach ($sth->fetchall() as $row) { 
    $data .= $row[$tablefields] . "<br>"; 
} 

for ($x = 1; $x <=3; $x++){ 
    echo '<br /> This is an iteration ' . $x; 
    echo $data; 
} 
+0

謝謝!基本上與上面的答案相同,只是在發佈=)後面一點點想知道你的理由以及使用點運算符而不是逗號函數來加入回聲字符串。使用點運算符是否是標準慣例? – jasonlcy

+0

這裏的謊言是你的答案..http://stackoverflow.com/questions/1466408/difference-between-and-in-php –

+0

明白了。點和逗號都在echo中輸出相同的東西,但實際上取決於你如何構造它。 – jasonlcy