2011-02-28 113 views
0

我想将一些图像放到其他图像上。下面的简短代码是关于我的尝试的示例。但$ i和$ j变量是不可见的。多维阵列过滤

$positions = array(
     array('64','64','home.png','www.sdsd.vf'), 
     array('128','640','icon-building64.png','www.sdsd232.vf') 
     ); 
for($i=0; $i<700; $i+=64) 
    for($j=0; $j<1100; $j+=64) 
    { 
        $out = array_filter($positions, function($position) { 
        return ($position[0] == $j AND $position[1] == $i); 
    }); 
    $out = array_merge(array(),$out); 

我试过,但我得到的错误:

$out = array_filter($positions, function($position,$i,$j) { 
        return ($position[0] == $j AND $position[1] == $i); 
    }); 

感谢您的帮助。

+0

你知道你的'for'循环没有结束'}'(而且没有'''') – Shikiryu 2011-02-28 09:52:09

回答

1

你不能传递额外的参数给array_filter功能,万一发生任何过滤在那里,不是在你的循环,像这样:

function filterPositions($value) { 
    return 
    ($value[0] < 1100 && $value[1] < 700) && 
    ($value[0] % 64 == 0) && ($value[1] % 64 == 0); 
} 
$out = array_filter($positions, 'filterPositions'); 
0

要做到这一点,最好的办法是经过$i$j到您的匿名函数

$out = array_filter($positions, function($position) use ($i, $j) { 
        return ($position[0] == $j AND $position[1] == $i); 
    }); 

这样你就可以避免函数中的硬编码值。