使用变量来定义$ this->变量 - PHP

时间:2015-05-05 13:18:48

标签: php

我正在尝试学习PHP课程,而且我仍然坚持认为应该工作的东西......

我试图巧妙地使用代码,而不是使用大量的if语句。

首先,$ queryResult数据包含以下内容

POSITION     COUNT
L1           5
L2           24
L3           87

这是Class -

class WIPData 
   {
    public $queryResult;
    public $L1 = 0;
    public $L2 = 0;
    public $L3 = 0; 


    function WIPData($results)
    {

        $queryResult = $results;

        while ($values = CDB::GetAssoc($queryResult)) {
       if ($queryResult)
       {
           $rPos = $values['POSITION'];
           $this->$rPos = $values['COUNT'];

//       if ($values['POSITION'] == "L1")
//       {
//           $this->L1 = $values['COUNT'];
//       }
//       if ($values['POSITION'] == "L2")
//       {
//           $this->L2= $values['COUNT'];
//       }
//       if ($values['POSITION'] == "L3")
//       {
//           $this->L3= $values['COUNT'];
//       }
          }
}


    }

}

正如你可以看到注释掉的if语句是相当多的代码,并且当有更多的位置时,这将更大..

所以我想我会努力做到这一点

$rPos = $values['POSITION'];  
  $this->$rPos = $values['COUNT'];

这个想法是' POSITION'将永远是变量名称之一,例如L1,L2,L3,所以php的眼中的代码真的会是

$this->L1 = $values['COUNT'];

但是,由于某种原因,变量不会被填充。

我在这里做不了什么吗?

任何建议都会非常有用!

1 个答案:

答案 0 :(得分:-1)

试试这个:

class WIPData {
    public $queryResult;
    public $L1 = 0;
    public $L2 = 0;
    public $L3 = 0; 

    function WIPData($results) {
        $this->queryResult = $results;

        if (!empty($this->queryResult)) {
            while ($values = CDB::GetAssoc($this->queryResult)) {
                  $this->{$rPos} = $values['POSITION'];
                  $this->{$rPos} = $values['COUNT'];
            }
        }
    }
}