0
我努力學習PHP類,我被困在我認爲應該努力東西..
我想聰明的代碼,而不是有很多if語句。
首先,$ QueryResult中的數據包含以下
POSITION COUNT
L1 5
L2 24
L3 87
這裏是類 -
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'];
的想法是,「位置」將始終是變量的名字之一例如,L1,L2,L3,所以真的在PHP眼中的代碼將
$this->L1 = $values['COUNT'];
但是,對於一些原因,變量不會被填充。
我在做一些不可能的事嗎?
任何建議都會非常有幫助!
你是什麼意思「由完全不工作」? – BenM
http://stackoverflow.com/questions/12571197/how-do-i-dynamically-write-a-php-object-property-name – MilanG
謝謝@MilanG - 你引用的問題解決了我的問題! – SK2017