Php 关于函数中多变量的问题
请对我温柔点我只是个新手,我只是自学。我有一个关于函数(showdata)中$data、$con、$limit、$nextant的变量的问题,请参见下面的代码。我已经在寻找解释,但什么也找不到。3个变量data、con、limit在include 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']) &
<?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)
,但我得到一个错误。我可以知道将变量设置为全局变量的正确方法吗?