我的头衔有点令人困惑。我会尝试更好地解释我想做什么。 我有一个包含其他数组的数组:
array (size=16)
0 =>
array (size=4)
'value' => string 'apple.png' (length=9)
'x' => int 3
'y' => int 4
'status' => boolean false
1 =>
array (size=4)
'value' => string 'apple.png' (length=9)
'x' => int 2
'y' => int 3
'status' => boolean false
2 =>
array (size=4)
'value' => string 'cake.png' (length=8)
'x' => int 3
'y' => int 1
'status' => boolean false
然后我有一个隐藏输入的表单:
'<input type="hidden" value="x:'.$i.';y:'.$j.'" name="coords"/>';
提交表单后,我获取值并提取坐标。然后我做了一个循环。
foreach($this->mapBoard as $block)
{
if($block['x'] == $x && $block['y'] == $y)
{
$block['status'] = true;
return $block;
}
else
{
continue;
}
}
主阵列称为'mapBoard'。我的问题是当我找到正确的数组元素时,如何更改 status 键的值。并将其放回 mapBoard 。
答案 0 :(得分:2)
尝试,
foreach($this->mapBoard as $key => $block)
{
if($block['x'] == $x && $block['y'] == $y)
{
$this->mapBoard[$key]['status'] = true;
return $block;
}
else
{
continue;
}
}
答案 1 :(得分:2)
默认情况下,PHP的foreach会复制它正在迭代的数组,因此我们必须在修改后手动填充数据。
这是对您的代码的简单调整
// For arrays foreach will give us the loop iteration in `i` while using $i => $block
foreach($this->mapBoard as $i=>$block)
{
if($block['x'] == $x && $block['y'] == $y)
{
$block['status'] = true;
// we know i is the position, so stuff it back in
$this->mapBoard[$i] = $block;
return $block;
}
else
{
continue;
}
}
答案 2 :(得分:0)
您可以返回数组键来代替$block['status'] = true;
,然后根据数组键更新状态。