从这个数组中我怎样才能得到第一个元素是 128 而第二个元素是 64 的数组。
$positions = array(
array('64','64','home.png','www.sdsd.vf'),
array('128','64','icon-building64.png','www.sdsd.vf')
);
foreach($positions as $position) {
if ($position[0] == '128' AND $position[1] == '64') {
// This is it!
}
}
或者您可以使用
array_filter()
删除其他成员。
$positions = array_filter($positions, function($position) {
return ($position[0] == '128' AND $position[1] == '64');
});
var_dump($positions);
array(1) { [1]=> array(4) { [0]=> string(3) "128" [1]=> string(2) "64" [2]=> string(19) "icon-building64.png" [3]=> string(11) "www.sdsd.vf" } }
看到它。
从 PHP8.4 开始,要从 2d 数组返回第一个符合条件的行,请使用
array_find()
。如果没有符合条件的行,则返回 null。
此技术针对性能进行了优化,因此手动中断循环并不是开发人员的唯一选择。
如果可能/希望找到多个符合条件的行,则array_filter()
是合适的。
代码 演示
$positions = [
['64', '64', 'home.png', 'www.sdsd.vf'],
['128', '64', 'icon-building64.png', 'www.sdsd.vf']
];
$find = [128, 64];
var_export(
array_find(
$positions,
fn($row) => [$row[0], $row[1]] == $find
)
);
输出:
array (
0 => '128',
1 => '64',
2 => 'icon-building64.png',
3 => 'www.sdsd.vf',
)