Php 继续获取中为foreach()提供的无效参数

Php 继续获取中为foreach()提供的无效参数,php,Php,我一直收到这样的警告: 警告:中为foreach()提供的参数无效 下面是我的完整代码,它执行mysql的函数列表输出并分页,每页10个输出,错误出现在最后一页 <?php require_once('dbconnect.php'); $yesterday = date("Y-m-d", strtotime("yesterday")); $page=intval($_POST['p']); if($page=='') { $pag

我一直收到这样的警告:

警告:中为foreach()提供的参数无效 下面是我的完整代码,它执行mysql的函数列表输出并分页,每页10个输出,错误出现在最后一页

<?php
    require_once('dbconnect.php');

    $yesterday = date("Y-m-d", strtotime("yesterday")); 
    $page=intval($_POST['p']);
    if($page=='')
    {
        $page=1;    
    } 
    $dbadd=($page-1)*10;

    $query = "SELECT * FROM ranking";
    $totalposts=mysql_num_rows(mysql_query($query));
    $totalpages=ceil($totalposts/10);
    $query = "SELECT  r.ranking,r.screenname,r.name,r.followers,r.tweets,r.location,r.`join    date`,r.avatar, h.date, r.followers-h.followers followers_diff, r.tweets-h.tweets tweets_diff  FROM ranking r, ranking_hist h WHERE r.screenname=h.screenname and h.date='$yesterday' AND r.ranking>$dbadd AND r.ranking<($dbadd+11) ORDER BY ranking ASC LIMIT 10 ";

    $result = mysql_query($query);

    if( !$result ) {
    die("Error: " . mysql_error() );
    } 

    while($row = mysql_fetch_assoc($result) ) {
    $tweep = $row['screenname']; 
    $tweeps[$tweep] = $row; 
    }

    $query = "SELECT r.ranking,r.screenname,r.name,r.followers,r.tweets,r.location,r.`join date`,r.avatar  FROM ranking r  WHERE r.screenname NOT IN ( SELECT DISTINCT screenname from ranking_hist ) AND r.ranking>$dbadd AND r.ranking<($dbadd+11)  ORDER BY ranking ASC LIMIT 10";

     $result = mysql_query($query);
     if( !$result ) {
    die("Error: " . mysql_error() );
     } 

     while($row = mysql_fetch_assoc($result) ) {
    echo "";
    $tweep = $row['screenname']; 
    $tweeps[$tweep] = $row; 
     }

     mysql_free_result($result);

     $i = 0;
     $total_amount = count($tweeps);

     foreach  ($tweeps as $tweep) {
         $i++;
         if ($total_amount == $i) {
             $class = 'divrow divrowlast';
         } else {
             $class = 'divrow';
         }

         $col5 = "";
     if( $tweep['followers_diff'] > 0 ) {                   
         $col5 = "<span style='color:green; display:inline;'> +" . $tweep['followers_diff'] . "▲ </span>";
         }
     else if( $tweep['followers_diff'] < 0 ) {
         $col5 = "<span style='color:red; display:inline;'> -" . $tweep['followers_diff'] . "▼ </span>";
         }

         $html_table .=   '<div class="'.$class.'"><ul>' .
             "<li class='row100rank'> " . $tweep['ranking'] . "</li>" .      
             "<li class='row100user'>
          <div class='avatar'><img width='32' height='32' src='" . $tweep['avatar'] . "' alt='" . $tweep['screenname'] ."' /></div>
          <div  class='feature-author'><a class='text_bigger' href='http://www.twitter.com/" . $tweep['screenname'] . "/'>@".$tweep['screenname']."</a></div>
        <div class='row100description'>".$tweep['name']."<br />".$tweep['location']."</div></li>" .
              "<li class='pad'><div class='stat'> <span>" . $tweep['followers'] . " $col5</span> followers</div></li>" .
              "<li class='pad rowTwitte'><div class='stat'> <span>" . $tweep['tweets'] . " $col6</span> tweets</div></li>" .
              "<li class='pad rowJoionDate'><div class='stat'> <span>" . date  ( 'd M y', strtotime($tweep['join date'])) . "</span> joindate</div></li>" .
              "</ul></div>";
          }

      echo $html_table;

?>

<div class="dataTables_paginate paging_full_numbers" ><span   class="first paginate_button" ><a class="pagelinks" href="javascript:void(0);" pageid="1" onClick="changepage(1);">First</a></span>
              <span class="previous paginate_button" ><a class="pagelinks" href="javascript:void(0);" pageid="<?php echo $page>1?($page-1):1;?>" onClick="changepage(<?php echo $page>1?($page-1):1;?>);" >Previous</a></span>

<span>
<?php
    switch($page){
        case 1:
             $it=1;
             $itl=6;
             break;
        case 2:
             $it=1;
             $itl=6;
         break;
        case $totalpages:
         $it=$totalpages-4;
         $itl=$totalpages+1;
            break;
        case $totalpages-1:
         $it=$totalpages-4;
         $itl=$totalpages+1;
         break;
        default:
         $it=$page-2;
         $itl=$page+3;
    }

    for(;$it<$itl;$it++){
?>
  <span class="<?php echo  $page== $it?'paginate_active':'paginate_button'; ?>"> 
      <a class="pagelinks" href="javascript:void(0);" pageid="<?php echo $it;?>" onClick="changepage(<?php echo $it;?>);" ><?php echo $it; ?></a></span>
<?php
   }
?>

  </span>
  <span class="next paginate_button" ><a class="pagelinks" href="javascript:void(0);" pageid="<?php echo $page<$totalpages?($page+1):$page;?>" onClick="changepage(<?php echo $page<$totalpages?($page+1):$page;?>);">Next</a>
  </span>

   <span class="last paginate_button" >
       <a class="pagelinks" href="javascript:void(0);" pageid="<?php echo $totalpages;?>" onClick="changepage(<?php echo $totalpages;?>);">Last</a>
   </span></div>

   <div class="dataTables_info"> 
        Showing <?php echo ($page-1)*10+1;?> to <?php echo ($page-1)*10+10;?> of <?php echo $totalposts;?> 
    </div>

试试代码吹。在某些情况下,$tweeps可能不是数组或对象,请检查数组是否为空,
是否为数组($tweeps)


您的问题可能是查询没有重新调整任何数据

您正在将新条目填充到循环内的
$tweeps
数组中,但如果没有数据,它将永远不会进入该循环

您没有在任何其他地方初始化
$tweeps
变量,因此如果它没有进入循环,
$tweeps
将不是数组,它将是未定义的。如果您试图在
foreach()
中使用它,则会出现错误

在开始填充变量之前,需要添加一行以初始化变量:

$tweeps = array();
这将位于循环上方的某个位置,您首先开始填充
$tweeps

$i = 0;
$total_amount = count($tweeps);
if(is_array($total_amount) && !empty($tweeps))
{
    foreach  ($tweeps as $tweep)
    {
        $i++;
        if ($total_amount == $i)
        {
           $class = 'divrow divrowlast';
        }
        else
        {
           $class = 'divrow';
        }
    }
}

希望有帮助。

$tweeps不能是数组或对象。尝试使用var_转储它或类似的方法,看看它在那一点上到底是什么。您能告诉我们$tweeps包含什么吗?
$tweeps
不是数组或对象。你能告诉我们一个函数是在哪里定义的吗?这不是主题,但值得注意的是,
mysql\u xxx()
函数已被弃用,不推荐使用。您应该使用等效的
mysqli_xxx()
函数或PDO库。请参阅PHP手册了解更多信息。@ SDC将考虑修改此一次完成与修复:IVE模式我的帖子再次检查,分页不工作时,我修改你的代码页工作,但没有数据拉在第二页等最后一页!您似乎没有在查询中对其进行分页。尝试将
“限制10”
更改为
限制“$page*10.”,10”
;当我添加数组时,在我的循环之前,分页不起作用,只需拉动前10$tweeps,下一页就会显示为空!我猜代码中还有其他错误。我没看那么远。上面的答案是试图修复原始问题,即foreach()中的错误。