gpt4 book ai didi

php - 在php中将对象推送到数组时,所有对象都是相同的

转载 作者:塔克拉玛干 更新时间:2023-11-03 05:53:53 25 4
gpt4 key购买 nike

我想把很多对象压入一个数组

每个对象都有不同的值

但是当我将它们插入数组时

它们的所有值都相同

如何解决这个问题?

$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/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com