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);
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);
}
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With