3

The thing is that I'm new to OOP PHP and I seem can't find the answer to how to retrieve a specific value from array of objects.

When I run request to the User class and method find_by_sql:

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

The response I get is:

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

)

My question basically is how can I set [act_code] value to my variable? If I would use the non-static method it would be easy since I could just call $obj->act_code. But how do I do same from a static method call?

3 Answers 3

5

You have to do

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

or more verbose

$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

As you can see by your result dump, $getAct contains an Array with one element (as indicated by [0] because Arrays are indexed with zero-based keys). The element is a User Object.

You access/mutate/call Object members/methods with the T_OBJECT_OPERATOR (->). Since $getAct[0] will return a handle to the object, you can then fetch the property by ->get_act.

Sign up to request clarification or add additional context in comments.

1 Comment

Thanks for answer very in detail. As i'm new i'm not quite aware of all stuff around OOP :)
0

To assign the value of the first array element's member variable act_code to a variable:

$act_code = $getAct[0]->act_code;

Comments

0

I'm not sure what ORM you are using, but if you want to retrieve only one record, just limit it to 1. That should return a User object instead of an array of User objects

$user = User::find_first_by_sql($sql);
$act  = $user->act_code;`

Comments

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.