我需要在多维数组中保留必须满足多条件条件的行。
$positions = [
['64', '64', 'home.png', 'www.sdsd.vf'],
['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);
}
);
您不能将额外的参数传递给 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');
最好的方法是将
$i
和 $j
传递给你的匿名函数
$out = array_filter($positions, function($position) use ($i, $j) {
return ($position[0] == $j AND $position[1] == $i);
});
这样您就可以避免在函数中对值进行硬编码。