修改对象中的数据


Modifying data in an object

我有以下功能:

function moveUp($row_nr){
        $other_row = ($row_nr - 1);
        foreach ($this -> data as &$row){
            if ($row['row_nr'] == $other_row){
                $row['row_nr']++;
            }
            else if ($row['row_nr'] == $row_nr){
                $row['row_nr']--;
            }
        }
    }

$this -> data是一个数组,包含表示SQL查询返回的字段行的数组。此函数的目的是通过递减指定行的row_nr和递增原来位于其上方的行的row_namer,将指定行按顺序向上移动。

不幸的是,事情似乎没有按计划进行!row_nr似乎没有在对象中更新。看看其他帖子,我看到有人建议使用&运算符来具体引用变量,而不是它的副本,但正如您在我的代码中看到的那样,我已经这样做了,但运气不佳(或者可能我做错了!)。

我也试过这样的线路:

$row -> row_nr++;
$row -> row_nr--;

正如我在这里发布的一些例子中看到的那样,但在那里也没有运气。

有人对对象中的数据数组为什么没有正确更新有什么建议吗?

function moveUp($row_nr){
        $other_row = ($row_nr - 1);
        foreach ($this -> data as $key => $row){
            if ($row['row_nr'] == $other_row){
                $this->data[$key]['row_nr']++;
            }
            else if ($row['row_nr'] == $row_nr){
                $this->data[$key]['row_nr']--;
            }
        }
    }

在PHP中,函数获取数组的副本。

任一

a) 返回新阵列

b) function moveUp(&$row_nr){

通过引用传递数组。