我不确定在访问PHP中的二维数组时遇到的错误。 基本上我的var_dump()给了我以下内容:
array(1) {
['x']=>
string(1) "3"
}
array(1) {
['y']=>
string(3) "3"
}
array(1) {
['x']=>
string(1) "5"
}
array(1) {
['y']=>
string(3) "5"
}
var_dump是正确的,并显示了我想要实现的结果。
我正在做的是以下内容: 1)在$ points数组中准备x和y坐标 2)检查一些数字是否在给定的坐标范围内:
function check_collisions {
$points = array();
for($y = 0; $y < count($this->Ks); $y++)
{
$points[]['x'] = $this->Ks[$y][0]; // first is 3, second is 5 - see var_dump above
$points[]['y'] = $this->Ks[$y][1]; // first is 3, second is 5 - see var_dump above
}
for($p = 0; $p < count($points); $p++)
{
for($r = 0; $r < count($this->Ns); $r++)
{
if($points[$p]['x'] >= $this->Ns[$r][0] && $points[$p]['x'] <= $this->Ns[$r][2])
{
if($points[$p]['y'] >= $this->Ns[$r][1] && $points[$p]['y'] <= $this->Ns[$r][3])
{
$collisions++;
}
}
}
}
return $collisions;
}
我的PHP现在告诉我x和y是两个if条件中的未定义索引。有什么不对的吗?其他索引运行良好,比如访问$ this-&gt; Ns等。 有什么想法吗?
答案 0 :(得分:0)
将for
循环更改为如下所示:
for($y = 0; $y < count($this->Ks); $y++)
{
$points[] = array('x' => $this->Ks[$y][0], 'y' => $this->Ks[$y][1]);
}
当您分配给没有索引的$points[]
时,它每次都附加到数组。您将每个循环附加两个数组到$points
,而不是带有坐标的单个数组。