我有以下功能:
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--;
正如我在这里发布的一些例子中所见,但也没有运气。
是否有人建议为什么对象中的数据数组似乎没有正确更新?
答案 0 :(得分:1)
在PHP中,函数获取数组的副本。
要么
a)返回新数组
或
b)function moveUp(&$row_nr){
通过引用传递数组。
答案 1 :(得分: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']--;
}
}
}