作者热门文章
- iOS/Objective-C 元类和类别
- objective-c - -1001 错误,当 NSURLSession 通过 httpproxy 和/etc/hosts
- java - 使用网络类获取 url 地址
- ios - 推送通知中不播放声音
我想把很多对象压入一个数组
每个对象都有不同的值
但是当我将它们插入数组时
它们的所有值都相同
如何解决这个问题?
$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);
最佳答案
那是因为您每次都将同一个对象插入数组。
您应该改为在每次迭代中推送一个新对象。例如,如果 $o
是一个 stdClass
对象,则在循环内使用 $o = new stdClass
:
while($row=mysql_fetch_assoc($result))
{
$o = new stdClass;
$o->pw=$row['password'];
$o->mail=$row['mail'];
array_push($arr, $o);
}
您还可以使用 mysql_fetch_object
,这也许更合适:
while($o=mysql_fetch_object($result))
{
array_push($arr, $o);
}
上述对象的属性将根据您的 SQL 查询列命名,因此要达到相同的效果,您还需要将查询更改为 select password AS pw, mail from account
。
最后,另一种选择是clone每次都是对象——尽管其他选择几乎总是更可取:
while($row=mysql_fetch_assoc($result))
{
$o = clone $o;
$o->pw=$row['password'];
$o->mail=$row['mail'];
array_push($arr, $o);
}
关于php - 在php中将对象推送到数组时,所有对象都是相同的,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10402731/
我是一名优秀的程序员,十分优秀!