我无法更新多维关联数组的值。数组$people
已从另一个MySQL调用生成。用:
array_push($people, array("forename" => $pat_f_name, "surname" => $pat_s_name,"id" => $id));
我已将$forname
和$surname
设置为""
,只是为了获得密钥。
我试图迭代数组进行SQL调用并检索相关的forename和surname,然后更新数组索引处的键。
以下是我到目前为止的尝试。
提前致谢。
$stmt = $mysql->stmt_init();
foreach ($people as $person)
{
if($stmt->prepare("SELECT forename,surname FROM worker WHERE id = ?"))
{
$stmt->bind_param('i', $p_id);
$p_id = $person["id"];
$stmt->execute();
$stmt->bind_result($f_name, $s_name);
while($stmt->fetch())
{
$people[$person]["forename"] = $f_name;
$people[$person]["surname"] = $s_name;
}
}
}
$stmt->close();
答案 0 :(得分:2)
$ person是一个数组
$p_id = $person["id"];
这个
$people[$person]["forename"] = $f_name;
应输出:
警告:....中的非法偏移类型
和
var_dump($people)
输出
array(0) { }
更好
foreach($people as $key => $person)
<your code>
$people[$key]["forename"] = $f_name;
答案 1 :(得分:0)
我认为这里的主要问题是你尝试使用$ person作为索引。要么给你的数组($ people)一个正确的索引,要么创建一个全新的数组,你可以在你的while循环中用你的新$人填充。
对于索引解决方案,请将人员添加到您的数组中,而不是:
$people[$i++] = $person;
对于新阵列解决方案,请创建一个新阵列,然后使用以下命令填充它:
$newPeople[] = $person;