我有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具有......>
可以使用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);