我有以下数组
$arrdata = array("CTypeID","TypeName","CTYPES","CID","COURSES","CTypeID");这个数组受到一个函数:Generic2DataSideBar($arrdata);,被调用函数的定义如下:
function Generic2DataSideBar($data)
{
//a generic array for data..
//var_dump($data);
$sdata= array();
//this is the function for generating depended data...
$this->load->model("Commons");
$dat="SELECT ".$data[0].",".$data[1]." FROM ".$data[2];
$result=$this->Commons->LoadResultSet($dat);
//Looping through the resultset
foreach ($result as $key) {
//get the number of departments
$da="SELECT ".$data[3]." FROM ".$data[4]." WHERE ".$data[5]."='".$key->$data[0]."'";
$dat=count($this->Commons->LoadResultSet($da));
$r=array($key->$data[1], $dat);
array_push($sdata, $r);
}
header("content-type: application/json");
$sdata=json_encode($sdata);
return $sdata;
}这个函数在PHP5.6.3中运行良好,但是当我升级到PHP7时,行$da="SELECT ".$data[3]." FROM ".$data[4]." WHERE ".$data[5]."='".$key->$data[0]."'";带来了一个问题,因为$key->$data[0]返回'',除该部分外,所有值都可以。在PHP7中,不能有像$key->"Data"这样长时间的“数据”是有效的属性名称吗?谢谢
发布于 2016-11-28 08:23:47
正如您在文档中所看到的,对$key->$data[0]的解释从PHP5变为PHP7(表的第二行)。
为了获得与PHP 5相同的结果,您可以执行以下操作之一:
$data[0]并使用该变量:
$field = $data;.其中“.$data5.”=‘.$key->$field.’‘;这两种方法都与PHP 5兼容,并且它们不会改变PHP 5上代码的行为。
https://stackoverflow.com/questions/40839409
复制相似问题