Ori*_*ice 1 php arrays loops while-loop
问题是我只得到表中的最后一个值.我认为它是因为我在构建数组时将其值引用到同一个对象,并且它不断变化.我知道while循环不会为每个迭代创建一个新的范围,这是问题所在.
为每次迭代获取新范围的最佳方法是什么?
码:
$namesArray= array();
while ($row=mysql_fetch_array($result))
{
$nameAndCode->code = $row['country_code2'];
$nameAndCode->name = $row['country_name'];
array_push($namesArray,$nameAndCode);
}
return $namesArray;
Run Code Online (Sandbox Code Playgroud)
nic*_*ckb 11
您需要在每次迭代时创建一个新对象:
while ($row=mysql_fetch_array($result))
{
$nameAndCode = new stdClass;
$nameAndCode->code = $row['country_code2'];
$nameAndCode->name = $row['country_name'];
$namesArray[] = $nameAndCode;
}
Run Code Online (Sandbox Code Playgroud)
否则,您反复引用同一个对象,只是覆盖其值.
如果不需要对象,也可以使用数组执行此操作:
while ($row=mysql_fetch_array($result))
{
$nameAndCode = array();
$nameAndCode['code'] = $row['country_code2'];
$nameAndCode['name'] = $row['country_name'];
$namesArray[] = $nameAndCode;
}
Run Code Online (Sandbox Code Playgroud)
或者更简洁:
while ($row=mysql_fetch_array($result))
{
$namesArray[] = array(
'code' => $row['country_code2'],
'name' => $row['country_name']
);
}
Run Code Online (Sandbox Code Playgroud)