iT邦幫忙

1

php 動態指定物件的陣列屬性名稱

class xxx{
	public $one = array(
		"aaa"		=> "111",
		"bbb"		=> "222",
		"ccc"		=> "333"
	);
	public $two = array(
		"aaa"		=> "444",
		"bbb"		=> "555",
		"ccc"		=> "666"
	);
}
$arrayName = 'two';
$xxx = new xxx();

// 我想要動態指定物件的陣列屬性名稱
// 但必須先指定物件屬性名稱後,再存取陣列才可以執行
$r = $xxx->$arrayName;
echo $r['ccc'];

// 請問有沒有方法可以少掉先指定物件屬性名稱的步驟
// 用類似下面的方式執行呢
echo $xxx->$arrayName['ccc'];

1 個回答

5
weiclin
iT邦高手 4 級 ‧ 2016-07-20 18:37:26
最佳解答
echo $xxx->{$arrayName}['ccc'];
看更多先前的回應...收起先前的回應...
weiclin iT邦高手 4 級 ‧ 2016-07-20 18:38:42 檢舉

或是你使用 php7 的話, 照你最後那樣寫就可以了

samjam iT邦新手 4 級 ‧ 2016-07-20 20:40:24 檢舉

謝謝
您這方法真好用
就是我想要的方式

想再延伸一個問題
我是用 PHP Version 5.3.5
您這方法放在雙引號內也可以執行
echo "{$xxx->{$arrayName}['aaa']} 放在雙引號內";
請問這樣放在雙引號內的方式在 PHP7 或其他版本也可執行嗎

weiclin iT邦高手 4 級 ‧ 2016-07-20 20:51:06 檢舉

php7 的話這樣就可以了:

echo "{$xxx->$arrayName['ccc']} other text\n";
samjam iT邦新手 4 級 ‧ 2016-07-20 21:30:04 檢舉

了解囉
謝謝weiclin

我要發表回答

立即登入回答