Доступ к переменным переменным с помощью объекта - PullRequest
4 голосов
/ 23 октября 2010

Я действительно не знаю, как описать эту проблему, поэтому извините, если название немного неясно.

Я получил объект с полями массива. Я получил имя этих полей, хранящихся в переменной, и я хочу получить элемент в одном из этих полей массива. например,

$field_name = 'array_field';

$object = new stdClass();
$object->array_field= array('this', 'is', 'an', 'array);

Я знаю, что могу получить доступ к массиву с помощью $object->$field_name, но теперь я хочу получить доступ к значению по ключу в массиве при обращении к нему с помощью переменной $field_name. например (это, очевидно, не работает) $object->$field_name[0]

Ответы [ 2 ]

14 голосов
/ 23 октября 2010

Я думаю, вы должны использовать что-то вроде следующего:

$object->{$field_name}[0]

Это подробно описано в разделе «Переменные переменные» руководства по PHP: http://www.php.net/manual/en/language.variables.variable.php

Кстати, согласноПо моему опыту, такой способ манипулирования полями может привести к незаметности кода - я рекомендую использовать ассоциативные массивы, если это возможно.

3 голосов
/ 23 октября 2010

Попробуйте это:

$object->{$field_name}[0]
...