2011-09-18 2 views
0

Мне нужно написать некоторый код, используя некоторые for-loops, которые проверяют значения некоторых данных массива.Как я могу сканировать квадратные матрицы, используя php/for loop?

первый проход: проверка следующий ...

{x0,y0} 

2-й проход: проверка 4 бита данных ...

{x0,y0}, {x1,y0}, 
{x0,y1}, {x1,y1}. 

третьего прохода: проверка 9 бит данных ...

{x0,y0}, {x1,y0}, {x2,y0}, 
{x0,y1}, {x1,y1}, {x2,y1}, 
{x0,y2}, {x1,y2}, {x2,y2}. 

Мой маленький мозг, похоже, не хочет функционировать, чтобы получить ответ. Может ли кто-нибудь помочь?

+0

FYI: матрицы продолжает получать больше мимо 3 прохода, он не просто останавливаться на достигнутом. – Stephen

+0

Это не похоже на PHP (я думаю, это грубое изображение, которое вы хотите дать), можете ли вы рассказать о базовой структуре данных (как выглядит этот массив?) И что вы подразумеваете под проверкой? – hakre

ответ

0
<?php 

for ($pass = 0; $pass < count($matrix); $pass++) 
{ 
    for ($i = 0; $i <= $pass; $i++) 
    { 
     for ($j = 0; $j <= $pass; $j++) 
     { 
      checkbit($matrix[$i][$j]); 
     } 
    } 
} 

?> 

Возможно, что-то вроде этого?

0

Вы могли бы начать с простой функцией, которая работает на матрице:

function scan($x, $y) {...} 

Кроме холст имеет диапазон для й и у исходного числа, и это заканчивающийся номер:

range x/y: 0,0/0,0 

или позже:

range x/y: 0,2/0,2 

Если вы говорите, что диапазоны всегда начинаются с 0, и оба диапазона всегда имеют одно и то же верхнее значение, это можно уменьшить как одну переменную: $range. Вы можете просто перебирать матрицу легко (Demo):

$range = 2; 

foreach(range(0, $range) as $y) 
    foreach(range(0, $range) as $x) 
     scan($x, $y); 

function scan($x, $y) 
{ 
... 
} 

Как $range зависит от числа текущего прохода, вы можете указать максимальное количество проходов в $passes и итерации над ней изменениями $range на основе $pass (Demo):

$passes = 3; 

foreach(range(1, $passes) as $pass) 
{ 
    $range = $pass-1; 
    foreach(range(0, $range) as $y) 
     foreach(range(0, $range) as $x) 
      scan($x, $y); 
} 
Смежные вопросы