У меня есть 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++;
}
}
Любая помощь очень ценится. Спасибо