php-рекурсивный 2d массив из функции - PullRequest
0 голосов
/ 11 сентября 2010

У меня есть двумерный массив, скажем, Array A [60] [150], и у меня есть другой массив, Array B [60] [150].Теперь я пытаюсь сделать следующее:

Учитывая точку в массиве A, скажем, x, вы хотите получить доступ к своим соседям, чтобы найти сходство между этими двумя элементами.если они похожи, найдите соседей.Так что сейчас я использую рекурсивную функцию, чтобы сделать это.Но он выдает ошибку, говорящую о том, что максимальное время выполнения превышено или не хватает памяти.

Так что мне просто интересно, есть ли другие, чтобы решить эту проблему.Я имею в виду без использования рекурсии.

пример кода:

           protected function find_neighbor($y,$x,$garray,$gr)
       {
        $r=$garray[$y][$x-1]['red'];
        if(true){
            $this->find_neighbor($y,$x-1,$garray,$gr);
        }

        $r=$garray[$y-1][$x-1]['red'];
        if(true){
            $this->find_neighbor($y-1,$x-1,$garray,$gr);
        }

        $r=$garray[$y-1][$x]['red'];
        if(true){
            $this->find_neighbor($y-1,$x,$garray,$gr);
        }

        $r=$garray[$y-1][$x+1]['red'];
        if(true){
            $this->find_neighbor($y-1,$x+1,$garray,$gr)
        }

        $r=$garray[$y][$x+1]['red'];
        if(true){
            $this->find_neighbor($y,$x+1,$garray,$gr);      
        }

        $r=$garray[$y+1][$x+1]['red'];
        if(true){
            $this->find_neighbor($y+1,$x+1,$garray,$gr);
        } 

        $r=$garray[$y+1][$x]['red'];
        if(true){
                $this->find_neighbor($y+1,$x,$garray,$gr);  
        } 

        $r=$garray[$y+1][$x-1]['red'];
        if(true){
            $this->find_neighbor($y+1,$x-1,$garray,$gr);
        }
}

1 Ответ

0 голосов
/ 11 сентября 2010

Не проверено:

$range = 3;
foreach ($A as $A1=>$tmp) {
    foreach ($tmp as $A2=>$value) {
        for ($x=0-$range; $x<=$range; $x++) {
            for ($y=0-$range; $y<=$range; $y++) {
                $F1 = $A1+$x;
                $F2 = $A2+$y;
                if (isset($A[$F1][$F2])) {
                    print "A[{$A1}][{$A2}] is close to A[{$F1}][{$F2}]<br>";
                }
            }
        }
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...