vendredi 17 avril 2020

How to remove a array from an array by comparing it with another array?

I've 2 array as below. One array is a 2 dimensional array($array_1) and another is a simple array ($array_2). This $array_1 as a key called private_name in each array and $array_2 has a list of private_key values. I want to keep the array from $array_1 which matches with $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',....];

So i wante remove array contents from $array_1 which matches with $array_2. Currently am using the below method but it takes a lot of time as there are 14k+ array values in $array_1. Is there any soulution for this which just uses 1 line to solve the above. I want a solution like

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

Current am doing like below which takes a lot of time

$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++;
        }
    }

Any help is much appreciated. Thank you



via Chebli Mohamed

Aucun commentaire:

Enregistrer un commentaire