如何使用php / for循环扫描方形矩阵?

时间:2011-09-18 08:46:14

标签: php arrays loops matrix

我需要使用一些for循环编写一些代码来测试某些数组数据的值。

第一遍:检查以下内容......

{x0,y0}

第二遍:检查4位数据......

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

第3遍:检查9位数据......

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

我的小脑子似乎不想起作用来得到这个答案。有人可以帮忙吗?

2 个答案:

答案 0 :(得分: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]);
        }
    }   
}

?>

也许是这样的?

答案 1 :(得分: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中指定最大通过次数,并根据$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);
}