有一个名为'locale'的会话变量,其值为:en。
DateTime Object
(
[date] => 2016-12-21 14:19:44.000000
[timezone_type] => 3
[timezone] => UTC
)
string(10) "2016-12-21"
并且有一个对象$locale = session()->get('locale'); // value = 'en';
包含属性:$page
,content_en
,content_ru
。
我需要的只是回复content_de
或$page->content_en
或$page->content_ru
,但要视地点而定。
$page->content_de
答案 0 :(得分:4)
这是一个更完整的解决方案,您甚至可以在phpfiddle.org上运行
$page = new stdClass();
$page->content_en = 'Testcontent';
$page->content_de = 'Testinhalt';
$property = 'content_' . locale("en");
if(property_exists($page, $property)) {
// The property exists, print it!
echo $page->$property;
} else {
// Fallback to some default
}
function locale($loc)
{
return $loc;
}
答案 1 :(得分:0)
Fabian的答案更灵活,通常更好。但是,如果您只接受特定值,这里有另一种方法。
if
$locale = session()->get('locale'); // value = 'en';
if ($locale == "en") {
echo $page->content_en;
} elseif ($locale == "ru") {
echo $page->content_ru;
} elseif ($locale == "de") {
echo $page->content_de;
}
switch
$locale = session()->get('locale'); // value = 'en';
switch ($locale) {
case "en":
echo $page->content_en;
break;
case "ru":
echo $page->content_ru;
break;
case "de":
echo $page->content_de;
break;
}
答案 2 :(得分:0)
您将无法通过组合字符串访问属性。 您唯一的选择是首先将其放在一个字符串中,并将该变量用作属性访问。
$property = 'content_' . session()->get('locale');
if( isset($page->$property) ) {
echo $page->$property;
}
答案 3 :(得分:0)
这应该这样做:
echo $page->{'content_' . session()->get('locale')};