0

我有以下功能:

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_nr 来按顺序向上移动指定的行。

不幸的是,事情似乎并没有计划好!row_nr 似乎没有在对象中更新。查看其他线程,我看到有人建议使用 & 运算符来专门引用变量而不是它的副本,但是正如您在我的代码中看到的那样,我已经做到了,但运气不佳(或者也许我做错了!)。

我也尝试过以下线路:

$row -> row_nr++;

$row -> row_nr--;

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

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

4

2 回答 2

1

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

任何一个

a) 返回新数组

或者

b)function moveUp(&$row_nr){

通过引用传递数组。

于 2012-09-05T08:44:33.563 回答
1
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']--;
            }
        }
    }
于 2012-09-05T08:46:26.597 回答