首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >访问PHP 7对象属性

访问PHP 7对象属性
EN

Stack Overflow用户
提问于 2016-11-28 07:50:28
回答 1查看 1.1K关注 0票数 0

我有以下数组

代码语言:javascript
复制
$arrdata = array("CTypeID","TypeName","CTYPES","CID","COURSES","CTypeID");

这个数组受到一个函数:Generic2DataSideBar($arrdata);,被调用函数的定义如下:

代码语言:javascript
复制
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"这样长时间的“数据”是有效的属性名称吗?谢谢

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2016-11-28 08:23:47

正如您在文档中所看到的,对$key->$data[0]的解释从PHP5变为PHP7(表的第二行)。

为了获得与PHP 5相同的结果,您可以执行以下操作之一:

  1. 提取变量中的$data[0]并使用该变量: $field = $data;.其中“.$data5.”=‘.$key->$field.’‘;
  2. 使用大括号对需要首先计算的子表达式进行分组: “.其中”.$data5.=‘.$key->{$data}.

这两种方法都与PHP 5兼容,并且它们不会改变PHP 5上代码的行为。

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/40839409

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档