2015-04-12 4 views
1

У меня есть объект $var который имеет 3 свойства onetwothree. Я пытаюсь сохранить свойства в массиве $info.Переменные свойства объекта в PHP

Долгий путь:

$info['one'] = $var->one; 
$info['two'] = $var->two; 
$info['three'] = $var->three; 

В какой-то момент в будущем 3 свойства станут еще много, так что я пытаюсь сохранить свойства в моем массиве, используя foreach петлю.

$attributes = array('one', 'two', 'three'); 

foreach ($attributes as $attribute) { 
    $info[$attribute] = $var->$attribute; // My problem is here 
} 

Проблема у меня есть вы не можете сделать это: $var->$attribute.

Как я могу использовать переменную для свойства моего объекта?

+0

Почему не вы должны быть в состоянии сделать это? Вы получаете какие-либо ошибки? Код работает отлично для меня. – Rizier123

+3

Попробуйте '$ var -> {$ attribute}' или я просто сделаю '$ info = get_object_vars ($ var)'. – AbraCadaver

+0

@ Rizier123 вы говорите, что я ** могу ** сделать это? – henrywright

ответ

1

Ваш текущий код работает нормально, или я бы просто сделать:

$var = new someObj; 
$attributes = array('one', 'two', 'three'); 
$info = array_intersect_key(array_flip($attributes), get_object_vars($var)); 
+0

В чем разница между '$ var -> {$ attribute}' и '$ var -> $ attribute'? – henrywright

+0

Только что проверил, ничего. Ваш код должен работать нормально. – AbraCadaver

+1

На пиво 5 Я собираюсь уйти сейчас :-) – AbraCadaver

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