[英]Get value of item from array class property dynamically in PHP
我有一個名為Model的對象,如下所示:
class Model {
public $menu;
}
在一個函數中,我實例化一個新模型,如下所示:
public function Hello(){
$model = new Model();
$model->menu['home'] = 'Hi there';
}
<!-- $model.{PropertyName} -->
元素被Model類中可用的屬性值替換。
在這種特定情況下,我有一個屬性$menu
,它是一個如上所示的array
。
現在,我有一段代碼提取一個字符串值,其中該字符串的結果是menu['home']
。 通過這個字符串,我嘗試讀取模型的屬性menu
。
所以:
private function Action($model){ $foo = "menu['home']"; //Get value of $foo $value = $model->$foo; }
我期望得到“嗨,那里”,但我得到一個通知: Notice: Undefined property: Model::$menu['home'] in ....script.php on line X
當我直接訪問該屬性時,它將起作用!
知道如何獲取數組項的價值嗎?
您的$model
實例沒有名稱為menu['home']
的成員,因此您無法真正通過這種方式訪問它。 您在這里有幾種選擇:
$foo = "menu";
$bar = "home";
//Get value of $foo[$bar]
$value = $model->{$foo}[$bar];
如果您沒有兩個不同變量的值,也可以使用php代碼進行拆分。
$foo = "menu['home']";
//Get value of $foo
die('ARE YOU SURE YOU REALLY WANT THIS?!?!?!');
$value = eval('return $model->'.$foo.';');
var_dump($value);
請注意,在不需要時使用
eval
確實不是一個好習慣!!! 並使您的代碼易受攻擊 。
要解決此問題,您需要一個稱為“變量變量”的PHP機制(請參閱http://php.net/manual/en/language.variables.variable.php )以獲取更多信息。
就您而言,可以通過以下方式訪問變量: $value = $model->${$foo};
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.