When push objects to array in php, all objects are same

arrays, json, object, php

Solution

That's because you are pushing the same object into the array each time.

You should push a new object in each iteration instead. For example, if `$o` is a `stdClass` object, use `$o = new stdClass` inside the loop:

while($row=mysql_fetch_assoc($result))
{
    $o = new stdClass;
    $o->pw=$row['password'];
    $o->mail=$row['mail'];
    array_push($arr, $o);
}

You can also use `mysql_fetch_object`, which is perhaps more appropriate:

while($o=mysql_fetch_object($result))
{
    array_push($arr, $o);
}

The properties on the above object will be named based on your SQL query columns, so to achieve the same effect you would also need to change the query to `select password AS pw, mail from account`.

Finally, another option is to clone the object each time -- although the other alternatives are almost always preferable:

while($row=mysql_fetch_assoc($result))
{
    $o = clone $o;
    $o->pw=$row['password'];
    $o->mail=$row['mail'];
    array_push($arr, $o);
}

Problem

I want to push many objects into a array and each object have different value but when I pushed them into array all values of them are same how to solve this problem? ``` $sql="select password, mail from account"; $result=mysql_query($sql); $arr=array(); while($row=mysql_fetch_assoc($result)) { $o->pw=$row['password']; $o->mail=$row['mail']; array_push($arr, $o); } echo json_encode($arr); ```

Original source

Related problems