【发布时间】:2020-07-30 18:15:27
【问题描述】:
我有 2 个数组,如下所示。一个数组是二维数组($array_1),另一个是简单数组($array_2)。这个 $array_1 作为每个数组中称为 private_name 的键,$array_2 有一个 private_key 值列表。我想保留与$array_2 匹配的$array_1 的数组。
$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++;
}
}
非常感谢任何帮助。谢谢
【问题讨论】:
标签: php arrays laravel-5 multidimensional-array foreach