2016-01-14 2 views
0

У меня есть этот небольшой отрывок:значения PHP объекта доступа динамически имя переменной

$action = $_GET['action']; 
// some other code 

// works 
$properties = $client->__soapCall($action, array(
    array(
     'Page' => $x 
    ) 
)); 

// try to get access to values by var $action 
$obj = $properties->$action->item; 

Это дает мне ошибку. Мое намерение состояло в том, чтобы использовать сценарий только один раз для нескольких операций, получив разные действия.

... но я понятия не имею, как это решить, и я не нашел полезных сообщений или статей.

var_dump($properties):

object(stdClass)#84 (4) { 
    ["PropertyGroups"]=> 
     object(stdClass)#85 (1) { 
      ["item"]=> 
       array(73) { 
        [0]=> 
         object(stdClass)#86 (7) { 
          ["PropertyGroupID"]=>int(1) 
         } 
       } 
      } 
    } 
+0

'Это дает мне error.' Мы должны догадаться, это правильно? –

+0

Нет, не стоит. Сожалею. Если 'action = GetPropertyGroups', ' Undefined property: stdClass :: $ GetPropertyGroups' –

+0

var_dump ($ properties) – jayxhj

ответ

1

Сценарий и эта линия

$obj = $properties->$action->item; 

абсолютно нормально. Но, как вы отметили в комментариях,

Если действие = GetPropertyGroups, Неопределенное недвижимость: stdClass::$GetPropertyGroups

Вы PropertyGroups недвижимость в $properties, не GetPropertyGroups.

Вы должны проверить, если имущество вы ищете существует:

property_exists($properties, $action) 
+0

Вы абсолютно прав. Это была моя ошибка, я ее не видел. Спасибо! –

+0

@SebastianRush приветствую :) –

Смежные вопросы