2011-02-28 109 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); 
    }); 

這樣你就可以避免函數中的硬編碼值。