我正在尝试学习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'];
但是,由于某种原因,变量不会被填充。
我在这里做不了什么吗?
任何建议都会非常有用!
答案 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'];
}
}
}
}