Как получить значение массива объектов? - PullRequest
2 голосов
/ 30 октября 2010

Так что дело в том, что я новичок в ООП php и, похоже, не могу найти ответ на вопрос, как извлечь конкретное значение из массива объектов.

Итак, я запускаю свой запрос к классу User и методу find_by_sql:

$getAct = User::find_by_sql($sql);

Ответ, который я получаю:

Array
(
    [0] => User Object
        (
            [id] => 6
            [permissions] => 0
            [email] => email@example.com
            [password] => 918f358a5cdf01e63d4609063d9A2bfec57f8455
            [first_name] => Name
            [last_name] => Surname
            [city] => City
            [gender] => m
            [birth_date] => 1980-02-02
            [act_code] => AAAAAAAAAAAAAAA
        )

)

Так что мой вопрос в основном заключается в том, как я могу установить значение [act_code] для моей переменной? Если бы я использовал нестатический метод, это было бы легко, так как я мог бы просто вызвать $ obj-> act_code. Но как мне сделать то же самое из статического вызова метода?

Ответы [ 3 ]

2 голосов
/ 30 октября 2010

Вы должны сделать

$getAct  = User::find_by_sql($sql);
$actCode = $getAct[0]->act_code;

или более подробный

$getAct  = User::find_by_sql($sql); // returns an array
$user    = $getAct[0];              // assign first element in array to $user
$actCode = $user->act_code;         // read act_code member from User Object

Как вы можете видеть из своего дампа результата, $getAct содержит массив с одним элементом (как указано[0] , поскольку массивы индексируются с помощью ключей, начинающихся с нуля ).Элемент является пользователем Object .

Вы получаете доступ / мутируете / вызываете члены / методы объекта с помощью T_OBJECT_OPERATOR (->).Так как $getAct[0] вернет дескриптор объекта, вы можете извлечь свойство по ->get_act.

0 голосов
/ 30 октября 2010

Я не уверен, какой ORM вы используете, но если вы хотите получить только одну запись, просто ограничьте ее до 1. Это должно вернуть объект User вместо массива объектов User

$user = User::find_first_by_sql($sql);
$act  = $user->act_code;`
0 голосов
/ 30 октября 2010

Чтобы присвоить значение переменной-члену первого элемента массива act_code переменной:

$act_code = $getAct[0]->act_code;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...