如何通过与另一个数组比较从一个数组中删除一个数组?

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

我有2个数组,如下所示。一个数组是二维数组($array_1),另一个是简单数组($array_2)。 $array_1作为每个阵列中称为private_name的键,$array_2具有private_key值的列表。我想从与$array_1匹配的$array_2中删除数组。

    $array_1 = [
        [0] => ['id'=>12, 'private_name' => 'name12', 'age' => '23'],
        [1] => ['id'=>2, 'private_name' => 'name2', 'age' => '23'],
        [2] => ['id'=>9, 'private_name' => 'name1', 'age' => '23'],
        [3] => ['id'=>11, 'private_name' => 'name11', 'age' => '23'],
        .
        .
        .
        [999] => ['id'=>999, 'private_name' => 'name999', 'age' => '23'],
   ];

   $array_2 = ['name1', 'name2', 'name3',....];

所以我想从与$array_1匹配的$array_2中删除数组内容。当前正在使用以下方法,但是由于$array_1中有14k +个数组值,因此需要花费大量时间。是否有任何解决方案,只需使用1条线即可解决以上问题。我想要一个像>>这样的解决方案

$newVal = array_intersect(array_column($array_1, 'private_name'), $array_2);

当前正在像下面这样花费很多时间

$results = array();
    $count = 0;
    if (count($array_1) > 0) {
        foreach ($array_1 as $row) {
            foreach ($row as $col => $val) {
                foreach ($array_2 as $key3 => $pvt_name) {

                    if (strcmp($row['private_name'], $array_1) == 0) {

                        $results[$count][$col] = $val;

                    }
                }
            }
            $count++;
        }
    }

非常感谢您的帮助。谢谢

我有2个数组,如下所示。一个数组是二维数组($ array_1),另一个数组是简单数组($ array_2)。 $ array_1作为每个数组中称为private_name的键,$ array_2具有......>

php arrays laravel-5 multidimensional-array foreach
1个回答
0
投票

可以使用array_filter轻松完成。

$filtered_array = array_filter($array_1, function($item) use($array_2) {
  return !in_array($item['private_name'], $array_2);
});
var_dump($filtered_array);
© www.soinside.com 2019 - 2024. All rights reserved.