2011-02-18 16 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

答えて

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 –

+2

@Toby Allen:私は知っていますが、私は-1に同意しますが、彼は数週間前に100%マニュアルの質問をしています。 SOは専門家のためのものであり、コミュニティーの仕事やコピー・ペーストの結果を出すだけの人ではありません。 – zerkms

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

これは非常に悪い習慣です。クエリが何らかの理由で失敗した場合、mysql_queryはboolean FALSEを返します。そして、盲目的にmysql_fetch_arrayに渡します。これは、ブール値ではなくmysqlの結果ハンドルを期待し、ブール値を返します。

これですべての失敗したデータがforeachループで使用されますが、エラー以外は何も得られないのでしょうか?

+0

Nevermind、私はこのすべてをPHPベースよりもSQLベースに変更しました。 – AKor

+0

@Sennheiser:lol、ニックネームを変更しました))) – zerkms

0

$ topArrayはprintTopTags()関数で定義されていないようです。 パラメータとして渡すことができます。

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

$ topArrayはグローバル変数です。

は、関数の内部であなたをそれを使用するには、いずれかのパラメータとして渡すか、それをインポートするには、グローバルなキーワードを使用する必要があります。

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

3年後にこの原因を引き起こしたのは何ですか;) –