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