Php 关于函数中多变量的问题

Php 关于函数中多变量的问题,php,function,Php,Function,请对我温柔点我只是个新手,我只是自学。我有一个关于函数(showdata)中$data、$con、$limit、$nextant的变量的问题,请参见下面的代码。我已经在寻找解释,但什么也找不到。3个变量data、con、limit在include php文件中,而数据变量在 作为查询的函数。你能告诉我这背后的解释吗?如果我删除了任何一个变量,分页将不起作用 <?php include('db.php'); if(isset($_REQUEST['actionfunction']) &

请对我温柔点我只是个新手,我只是自学。我有一个关于函数(showdata)中$data、$con、$limit、$nextant的变量的问题,请参见下面的代码。我已经在寻找解释,但什么也找不到。3个变量data、con、limit在include php文件中,而数据变量在 作为查询的函数。你能告诉我这背后的解释吗?如果我删除了任何一个变量,分页将不起作用

 <?php
include('db.php');

 if(isset($_REQUEST['actionfunction']) && $_REQUEST['actionfunction']!=''){
$actionfunction = $_REQUEST['actionfunction'];

   call_user_func($actionfunction,$_REQUEST,$con,$limit,$adjacent);
}
function showData($data,$con,$limit,$adjacent){
  $page = $data['page'];
   if($page==1){
   $start = 0;  
  }
  else{
  $start = ($page-1)*$limit;
  }
  $sql = "select * from ajaxpage order by id asc";
  $rows  = $con->query($sql);
  $rows  = $rows->num_rows;

  $sql = "select * from ajaxpage order by id asc limit $start,$limit";

  $data = $con->query($sql);
  $str='<table><tr class="head"><td>Id</td><td>Firstname</td><td>Lastname</td></tr>';
  if($data->num_rows>0){
   while( $row = $data->fetch_array(MYSQLI_ASSOC)){
      $str.="<tr><td>".$row['id']."</td><td>".$row['firstname']."</td><td>".$row['lastname']."</td></tr>";
   }
   }else{
    $str .= "<td colspan='5'>No Data Available</td>";
   }
   $str.='</table>';

echo $str; 
pagination($limit,$adjacent,$rows,$page);  
}
function pagination($limit,$adjacents,$rows,$page){ 
    $pagination='';
    if ($page == 0) $page = 1;                  //if no page var is given, default to 1.
    $prev = $page - 1;                          //previous page is page - 1
    $next = $page + 1;                          //next page is page + 1
    $prev_='';
    $first='';
    $lastpage = ceil($rows/$limit); 
    $next_='';
    $last='';
    if($lastpage > 1)
    {   

        //previous button
        if ($page > 1) 
            $prev_.= "<a class='page-numbers' href=\"?page=$prev\">previous</a>";
        else{
            //$pagination.= "<span class=\"disabled\">previous</span>"; 
            }

        //pages 
        if ($lastpage < 5 + ($adjacents * 2))   //not enough pages to bother breaking it up
        {   
        $first='';
            for ($counter = 1; $counter <= $lastpage; $counter++)
            {
                if ($counter == $page)
                    $pagination.= "<span class=\"current\">$counter</span>";
                else
                    $pagination.= "<a class='page-numbers' href=\"?page=$counter\">$counter</a>";                   
            }
            $last='';
        }
        elseif($lastpage > 3 + ($adjacents * 2))    //enough pages to hide some
        {
            //close to beginning; only hide later pages
            $first='';
            if($page < 1 + ($adjacents * 2))        
            {
                for ($counter = 1; $counter < 4 + ($adjacents * 2); $counter++)
                {
                    if ($counter == $page)
                        $pagination.= "<span class=\"current\">$counter</span>";
                    else
                        $pagination.= "<a class='page-numbers' href=\"?page=$counter\">$counter</a>";                   
                }
            $last.= "<a class='page-numbers' href=\"?page=$lastpage\">Last</a>";            
            }

            //in middle; hide some front and some back
            elseif($lastpage - ($adjacents * 2) > $page && $page > ($adjacents * 2))
            {
               $first.= "<a class='page-numbers' href=\"?page=1\">First</a>";   
            for ($counter = $page - $adjacents; $counter <= $page + $adjacents; $counter++)
                {
                    if ($counter == $page)
                        $pagination.= "<span class=\"current\">$counter</span>";
                    else
                        $pagination.= "<a class='page-numbers' href=\"?page=$counter\">$counter</a>";                   
                }
                $last.= "<a class='page-numbers' href=\"?page=$lastpage\">Last</a>";            
            }
            //close to end; only hide early pages
            else
            {
                $first.= "<a class='page-numbers' href=\"?page=1\">First</a>";  
                for ($counter = $lastpage - (2 + ($adjacents * 2)); $counter <= $lastpage; $counter++)
                {
                    if ($counter == $page)
                        $pagination.= "<span class=\"current\">$counter</span>";
                    else
                        $pagination.= "<a class='page-numbers' href=\"?page=$counter\">$counter</a>";                   
                }
                $last='';
            }

            }
        if ($page < $counter - 1) 
            $next_.= "<a class='page-numbers' href=\"?page=$next\">next</a>";
        else{
            //$pagination.= "<span class=\"disabled\">next</span>";
            }
        $pagination = "<div class=\"pagination\">".$first.$prev_.$pagination.$next_.$last;
        //next button

        $pagination.= "</div>\n";       
    }

    echo $pagination;  
}
?>

那么您的意思是$data是在call\u user\u func()中定义的?如果是这样,则需要在该函数外部声明数据,然后在函数内部使用global来访问该数据:

$data=0;
function somefunction() {
    global $data;
    $data=50;
}
// now call the function - $data has been updated at top level
somefunction();
echo $data; // prints 50

这是因为
$data
$con
$limit
$nexted
变量在函数范围内不可用,请使用
全局
showData()
函数中使用它们。函数中定义的$data变量如何?@MarlZ15199$data基于$con,如果从函数参数中删除$con,则$con也是未定义的。在include文件中,我将3个变量设置为全局变量,即
GLOBAL$con、$limit、$nextant
并将函数修改为
showData($data)
,但我得到一个错误。我可以知道将变量设置为全局变量的正确方法吗?