我有以下代码:
//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)
。
任何帮助?
答案 0 :(得分: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 :(得分:0)
$tagSQL = mysql_fetch_array(mysql_query("SELECT * FROM tags"));
这是非常糟糕的做法。如果查询由于任何原因而失败,则mysql_query返回boolean FALSE,然后你盲目地传递给mysql_fetch_array,然后它将依次失败,因为它期望一个mysql结果句柄,而不是一个布尔值,并返回一个布尔本身。
然后在foreach循环中使用所有这些失败的数据,并想知道为什么除了错误之外你没有得到任何东西?
答案 2 :(得分:0)
看起来$ topArray只是没有在printTopTags()函数中定义。 您可以将其作为参数传递:
function printTopTags($topArray) {
...
}
答案 3 :(得分:-1)
$ topArray是一个全局变量。
要在函数中使用它,您必须将其作为参数传递或使用global关键字将其导入:
function printTopTags()
{
global $topArray; // <---- Here!
$n = 0;
foreach($topArray as $buddha)