2

I have this object:

$myobject = (object) [  
    'name' => [],
    'value' => [],
    'id' => [],
];

I want to add some values in a for each loop, but array push does not seem to work.

I've tried this:

$object_name = $myobject->name;
array_push($object_name, "testName");

I've looked everywhere but can't seem to find the answer.

3
  • 2
    array_push($myobject->name, "testName"); Commented Jun 20, 2016 at 10:56
  • 2
    $object->name[] = 'testName';? Commented Jun 20, 2016 at 10:56
  • Thanks @Jon, that worked! Nospor, that didn't work for me earlier, maybe I did something wrong though, but thanks for helping out! Can't mark anything as a right answer, but if you post it as an answer instead of a comment, I'll mark it as a right answer :) Commented Jun 20, 2016 at 10:59

3 Answers 3

3

You cann't use array_push this way. $object_name is not your main object.

When you push to $object_name, your $myobject is still empty.

You can fix it adding reference &, for example:

$object_name = &$myobject->name;

or just push to your original object:

array_push($myobject->name, "testName");

or

$myobject->name[] = "something";
Sign up to request clarification or add additional context in comments.

Comments

2

Simple option is to add another item to the property using normal array notation.

e.g.

$object->name[] = 'testName';

Comments

2

Try this:

$names = ['A', 'B', 'C'];  /* This is an array of names */

foreach ($names as $name) {
    $myobject->name[] = $name;
}

echo '<pre>';
print_r($myobject);

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.