2011-09-18 62 views
0

我需要使用一些测试某些数组数据值的for循环来编写一些代码。我如何扫描使用php/for循环的方形矩阵?

第一通:检查下列...

{x0,y0} 

第二通:检查数据的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

仅供参考:矩阵继续在第三遍过后变大,它并不仅仅停留在那里。 – 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) {...} 

此外画布有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指定最大遍数和遍历它的基础上$pass改变$rangeDemo):

$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); 
}