Php 如何在foreach迭代中修改多维数组的子元素

Php 如何在foreach迭代中修改多维数组的子元素,php,multidimensional-array,reference,foreach,Php,Multidimensional Array,Reference,Foreach,我试图修改多维数组的每个数组元素中第一个子元素的内容,但是,如果我通过引用传递所述元素,则会得到一个错误,该错误不应为“&”。我是否需要放弃foreach($arraslist())语法,并使用计数器变量还原为循环和访问的标准 foreach ($transactions as list(&$student, &$tyID)) { $query = "SELECT $column FROM student WHER

我试图修改多维数组的每个数组元素中第一个子元素的内容,但是,如果我通过引用传递所述元素,则会得到一个错误,该错误不应为“&”。我是否需要放弃foreach($arraslist())语法,并使用计数器变量还原为循环和访问的标准

foreach ($transactions as list(&$student, &$tyID)) {

    $query = "SELECT $column
              FROM student
              WHERE stUserID=$student";

    if ($stmt = mysqli_prepare($link, $query)) {
        mysqli_stmt_execute($stmt);

        mysqli_stmt_bind_result($stmt, $userHID);

        while (mysqli_stmt_fetch($stmt)) {
            $student = $userHID;
            $tyID = $transType[$tyID];
        }

        mysqli_stmt_close($stmt);
    }
}

编辑:更新的代码,我实际上需要修改事务数组中每个数组的前两个子元素。

为什么不能这样做?假设键与列表变量相同

foreach ($transactions as &$transaction) {

    $query = "SELECT {$column}
              FROM student
              WHERE stUserID={$transaction['student']}";

    if ($stmt = mysqli_prepare($link, $query)) {
        mysqli_stmt_execute($stmt);

        mysqli_stmt_bind_result($stmt, $userHID);

        while (mysqli_stmt_fetch($stmt)) {
            $transaction['student'] = $userHID;
            $transaction['tyID'] = $transType[$transaction['tyID']];
        }

        mysqli_stmt_close($stmt);
    }
}

您在事务数组中只有学生id吗。修改子元素是什么意思?事务包含一系列事务数据(用户ID、事务类型、借方、贷方等),其中第一个元素是学生标识符。我根据查看页面的人员修改此元素,如果是教员,则为学生编号,如果是查看页面的学生,则显示别名。我试图在表中输出之前执行所有重新格式化@然后,在获取事务表本身的同时,执行检查并获取数组accordingly@Ninad遗憾的是,该表只包含对用户id的引用,然后我必须将该id与另一个表的id进行匹配,以找到我想要的值。数据库设计超出了我的控制范围。我要求做的事情是否超出了PHP当前的功能?我知道这个结构只是在5.5中引入的。那么为什么要使用事务数组中元素的引用呢?只需使用simple foreach循环来获得所需的ID并修改为什么使用list?这基本上是有效的。我使用list()是因为它给了我变量,而不是我最终不得不使用的丑陋事务[#]。但如果不是这样,这仍然比我需要的for循环要好。非常感谢。如果我有足够的代表,我会投票!很高兴这有帮助,现在我想你可以:)还差两个!别担心,@code jaff,我会尽快拿到的。