Php 继续获取中为foreach()提供的无效参数
我一直收到这样的警告: 警告:中为foreach()提供的参数无效 下面是我的完整代码,它执行mysql的函数列表输出并分页,每页10个输出,错误出现在最后一页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
<?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()中的错误。