2011-02-18 137 views
0

我有以下代碼:PHP foreach循環問題

//generate 10 top tags 
$tagSQL = mysql_fetch_array(mysql_query("SELECT * FROM tags")); 
$topArray = array(); 
foreach($tagSQL as $poland) 
{ 
    if($poland["tagID"] == 1) 
    { 
     $topArray[0] ++; 
    } 
    if($poland["tagID"] == 2) 
    { 
     $topArray[1] ++; 
    } 
    if($poland["tagID"] == 3) 
    { 
     $topArray[2] ++; 
    } 
    if($poland["tagID"] == 4) 
    { 
     $topArray[3] ++; 
    } 
} 
function printTopTags() 
{ 
    $n = 0; 
    foreach($topArray as $buddha) 
    { 
     $n = $n + 1; 
     if(sizeOf($topArray) > $n) 
     { 
      $hersheyBar = " "; 
     } 
     else 
     { 
      $hersheyBar = ""; 
     } 
     $finalFinalEndArray = mysql_fetch_array(mysql_query("SELECT tagName FROM tags WHERE tagID = '$buddha'")); 
     foreach($finalFinalEndArray as $waterBottle) 
     { 
      echo $waterBottle . $hersheyBar; 
     } 
    } 
} 

我得到的錯誤Warning: Invalid argument supplied for foreach() on line 93

93號線是foreach($topArray as $buddha)

任何幫助?

+3

`的var_dump($ topArray);`PS:你問了幾個瑣碎的問題連續幾周。爲新手閱讀一些PHP書不是更簡單嗎? – zerkms 2011-02-18 05:17:57

回答

1

http://ru.php.net/manual/en/language.variables.scope.php

而且

if($poland["tagID"] == 1) 
{ 
    $topArray[0] ++; 
} 
if($poland["tagID"] == 2) 
{ 
    $topArray[1] ++; 
} 
if($poland["tagID"] == 3) 
{ 
    $topArray[2] ++; 
} 
if($poland["tagID"] == 4) 
{ 
    $topArray[3] ++; 
} 

===

if ($poland["tagID"] >= 1 && $poland["tagID"] <= 4) 
    $topArray[$poland["tagID"] - 1]++; 
+1

RTFM有沒有在一個stackoverflow答案-1 – 2011-02-18 07:56:05

+2

@託比艾倫:我知道,我同意-1,但他問幾個星期已經100%的手動問題。 SO是爲專家服務的,而不是隻爲社區和複製粘貼結果提供任務的人。 – zerkms 2011-02-18 09:49:19

0
$tagSQL = mysql_fetch_array(mysql_query("SELECT * FROM tags")); 

這是非常不好的做法。如果查詢因爲任何原因而失敗,mysql_query返回布爾型FALSE,然後您將其盲目地傳遞給mysql_fetch_array,然後依次失敗,因爲它期望得到一個mysql結果句柄,而不是布爾型,並返回一個布爾值本身。

然後,你在foreach循環中使用所有這些失敗的數據,並想知道爲什麼你沒有得到任何東西,但錯誤?

+0

沒關係,我把所有這些都改成了基於PHP的基於PHP的基礎。 – AKor 2011-02-18 06:11:54

0

看起來像$ topArray只是沒有在printTopTags()函數中定義。 您可以將其作爲參數傳遞給:

function printTopTags($topArray) { 
... 
} 
-1

$ topArray是一個全局變量。

要使用它的一個函數裏,你要麼把它作爲一個參數或使用global關鍵字將其導入:

function printTopTags() 
{ 
    global $topArray; // <---- Here! 
    $n = 0; 
    foreach($topArray as $buddha)