如何在 while 循环中填充数组并在每次迭代中获得新范围?

How do I fill an array inside a while loop and get new scope each iteration?(如何在 while 循环中填充数组并在每次迭代中获得新范围?)
本文介绍了如何在 while 循环中填充数组并在每次迭代中获得新范围?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着跟版网的小编来一起学习吧!

问题描述

问题是我只得到来自表的最后一个值.我认为这是因为我在将数组的值引用到同一个对象的同时构建数组,并且它一直在变化.我知道 while 循环不会为每次迭代创建一个新的范围,问题.

The problem is that I get only the last value comming from the Table. I think its because I am building the array while referencing its values to the same object, and it keeps changing. I know while loop doesnt create a new scope for each iteration which IS the problem.

为每次迭代获得新范围的最佳方法是什么?

代码:

    $namesArray= array();
        while ($row=mysql_fetch_array($result))
        {
        $nameAndCode->code = $row['country_code2'];
        $nameAndCode->name = $row['country_name'];           
        array_push($namesArray,$nameAndCode);


        } 
return $namesArray;

推荐答案

您需要在每次迭代时创建一个新对象:

You need to create a new object on each iteration:

while ($row=mysql_fetch_array($result))
{
    $nameAndCode = new stdClass;
    $nameAndCode->code = $row['country_code2'];
    $nameAndCode->name = $row['country_name'];           
    $namesArray[] = $nameAndCode;
} 

否则,您将一遍又一遍地引用同一个对象,而只会覆盖其值.

Otherwise you're referencing the same object over and over, and just overwriting its values.

如果你不需要对象,你也可以用数组来做到这一点:

You also can do this with arrays if you don't require objects:

while ($row=mysql_fetch_array($result))
{
    $nameAndCode = array();
    $nameAndCode['code'] = $row['country_code2'];
    $nameAndCode['name'] = $row['country_name'];           
    $namesArray[] = $nameAndCode;
} 

或者更简洁:

while ($row=mysql_fetch_array($result))
{
    $namesArray[] = array( 
        'code' => $row['country_code2'],
        'name' => $row['country_name']
    );
} 

这篇关于如何在 while 循环中填充数组并在每次迭代中获得新范围?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持跟版网!

本站部分内容来源互联网,如果有图片或者内容侵犯了您的权益,请联系我们,我们会在确认后第一时间进行删除!

相关文档推荐

Why can#39;t I update data in an array with foreach loop?(为什么我不能用 foreach 循环更新数组中的数据?)
Foreach for arrays inside of an array(Foreach 用于数组内的数组)
PHP array get next key/value in foreach()(PHP 数组在 foreach() 中获取下一个键/值)
Using preg_match on a multidimensional array to return key values arrays(在多维数组上使用 preg_match 返回键值数组)
php foreach as key, every two number as a group(php foreach 为key,每两个数字为一组)
Treat a PHP class that implements Iterator as an array(将实现 Iterator 的 PHP 类视为数组)