0

PHP で 2 次元配列にアクセスしているときに発生するエラーについてはよくわかりません。基本的に、私の 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 が 2 つの if 条件内の未定義のインデックスであると教えてくれます。何か間違っていることでも?$this->Ns などへのアクセスなど、他のインデックスはうまく機能しています。何かアイデアはありますか?

4

1 に答える 1

0

forループを次のように変更します。

for($y = 0; $y < count($this->Ks); $y++)
{
    $points[] = array('x' => $this->Ks[$y][0], 'y' => $this->Ks[$y][1]);
}

インデックスなしでに割り当てると$points[]、毎回配列に追加されます。$points座標を持つ単一の配列ではなく、各ループに2 つの配列を追加しています。

于 2012-05-25T19:40:23.380 に答える