在二维数组中查找具有两个指定列值的行

问题描述 投票:0回答:2

从这个数组中我怎样才能得到第一个元素是 128 而第二个元素是 64 的数组。

$positions = array(
    array('64','64','home.png','www.sdsd.vf'),
    array('128','64','icon-building64.png','www.sdsd.vf')
);
php arrays multidimensional-array filter
2个回答
2
投票
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" } } 

看到它


0
投票

从 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',
)
© www.soinside.com 2019 - 2024. All rights reserved.