Php $variable=$variable=$variable=array()
我正在服务器端处理数据表。我有一个我不明白的例子 这部分到底在做什么,为什么在实际变量之前调用其中的一些Php $variable=$variable=$variable=array(),php,arrays,variables,datatables,Php,Arrays,Variables,Datatables,我正在服务器端处理数据表。我有一个我不明白的例子 这部分到底在做什么,为什么在实际变量之前调用其中的一些 $params = $columns = $totalRecords = $data = array(); 还是这个 $where_condition = $sqlTot = $sqlRec = ""; 我搜索了答案,但我会找到像$$a这样的变量 <?php require_once("../connections/mysqli_connect.php");
$params = $columns = $totalRecords = $data = array();
还是这个
$where_condition = $sqlTot = $sqlRec = "";
我搜索了答案,但我会找到像$$a这样的变量
<?php
require_once("../connections/mysqli_connect.php");
$params = $columns = $totalRecords = $data = array();
$params = $_REQUEST;
$columns = array(
0 => 'post_id',
1 => 'post_title',
2 => 'post_desc'
);
$where_condition = $sqlTot = $sqlRec = "";
if( !empty($params['search']['value']) ) {
$where_condition .= " WHERE ";
$where_condition .= " ( post_title LIKE '%".$params['search']['value']."%' ";
$where_condition .= " OR post_desc LIKE '%".$params['search']['value']."%' )";
}
$sql_query = " SELECT * FROM li_ajax_post_load ";
$sqlTot .= $sql_query;
$sqlRec .= $sql_query;
if(isset($where_condition) && $where_condition != '') {
$sqlTot .= $where_condition;
$sqlRec .= $where_condition;
}
$sqlRec .= " ORDER BY ". $columns[$params['order'][0]['column']]." ".$params['order'][0]['dir']." LIMIT ".$params['start']." ,".$params['length']." ";
$queryTot = mysqli_query($con, $sqlTot) or die("Database Error:". mysqli_error($con));
$totalRecords = mysqli_num_rows($queryTot);
$queryRecords = mysqli_query($con, $sqlRec) or die("Error to Get the Post details.");
while( $row = mysqli_fetch_row($queryRecords) ) {
$data[] = $row;
}
$json_data = array(
"draw" => intval( $params['draw'] ),
"recordsTotal" => intval( $totalRecords ),
"recordsFiltered" => intval($totalRecords),
"data" => $data
);
echo json_encode($json_data);
这意味着所有变量都被分配到右侧相同的值。这与:
$data = array();
$totalRecords = $data; // which is an empty array (array())
$columns = $totalRecords; // which is an empty array (array())
$params = $columns; // which is an empty array (array())
及
文件说:
基本赋值运算符为“=”。你的第一个倾向可能是认为这是“等于”。不要。这实际上意味着将左侧操作数设置为右侧表达式的值(即“设置为”)
及
下表按优先级顺序列出了运算符,最高优先级的运算符位于顶部。同一行上的运算符具有相同的优先级,在这种情况下,关联性决定分组
右=+=-=*=***=/=.=%=&=|=^==赋值
这意味着,当使用=
时,表达式从右向左求值。
所以这:
$params = $columns = $totalRecords = $data = array();
与
$data = array();
$totalRecords = $data;
$columns = $totalRecords;
$params = $columns;
这称为多重分配或分配
您可以在PHP中执行此操作,因为有两件事:
PHP按值赋值
赋值是具有值(赋值)的表达式
因此对于表达式$params=$columns=$totalRecords=$data=array()代码>在您的示例中:
$one = $two = $three = new StdClass;
$three->newProperty = 'value';
echo $one->newProperty; // echoes value
$data=array()
为$data
赋值(空数组),但它也是一个计算结果为空数组的表达式
$totalRecords=$data=array()
将表达式$data=array()
的值赋给$totalRecords
,但它也是一个计算结果为空数组的表达式
等等
需要注意的是,由于所有赋值都是按值进行的,因此每个赋值变量都有自己的值,并且赋值后没有一个变量内在地相互关联,例如,向其中一个变量附加一个值,如$data[]=“something”
对$totalRecords
或分配在一起的任何其他变量不起作用
作为将来的参考,它以这种方式工作,但如果指定的值是对象,效果会有所不同。每个变量都保存同一对象标识符的副本,因此所有变量都引用同一对象,例如:
$one = $two = $three = new StdClass;
$three->newProperty = 'value';
echo $one->newProperty; // echoes value
您是专门询问=
还是[…]=$something=$something\u other
?变量刚刚初始化。这是速记。在$params行中,它们都被设置为空数组。在$where_条件行中,它们都被设置为noting。对于这个问题,代码检查是一个更好的地方。。。哦,等等,它已经存在了:PS:这样做没什么错,见鬼,我甚至经常在初始化多个调试变量为空时这样做。最好是用一行代码把它们全部打出来,而不是用一块十块左右的代码(lol:)那么YMMV。谢谢大家的帮助和codereview链接。你们对我说得很清楚。谢谢虽然我不能提高投票率,但我希望其他人能这样做。。。。但您应该已经能够将答案限定为“已接受答案”。