我无法在PHP数组中添加键值对
这是密码我无法在PHP数组中添加键值对,php,arrays,Php,Arrays,这是密码 $tasks = $project->getTasks(); foreach ($tasks as $key => $task) { $task['position'] = $space->getPosition(); $task['symbol'] = $space->getSymbol(); } 逻辑上,“位置”和“符号”应添加到数组“任务”中。它们实际上是被
$tasks = $project->getTasks();
foreach ($tasks as $key => $task) {
$task['position'] = $space->getPosition();
$task['symbol'] = $space->getSymbol();
}
逻辑上,“位置”和“符号”应添加到数组“任务”中。它们实际上是被添加的,但只是在循环内部。它们消失在环路之外。为什么? 这是因为当您使用
foreach
时,您将获得数组值的副本。您需要在foreach
中使用引用
foreach ($tasks as $key => &$task) {
$task['position'] = $space->getPosition();
$task['symbol'] = $space->getSymbol();
}
请注意
&
,它告诉PHP在循环内使用引用。除非另有规定,否则PHP foreach循环按值操作(在数据副本上)。有两种可能的解决办法
foreach ($tasks as $key => $task) {
$tasks[$key]['position'] = $space->getPosition();
$tasks[$key]['symbol'] = $space->getSymbol();
}
或者
foreach ($tasks as &$task) {
$task['position'] = $space->getPosition();
$task['symbol'] = $space->getSymbol();
}
请参阅文档:不应该是这样的吗
$tasks = $project->getTasks();
foreach ($tasks as $key => $task) {
$tasks[$key]['position'] = $space->getPosition();
$tasks[$key]['symbol'] = $space->getSymbol();
}
那太完美了。谢谢,两种方法都可以。谢谢。