Both of my arrays have over 500 000 elements.
I would like to return only those elements from multidimensional array that ARE NOT PRESENT in indexed array.
Here is what my multidimensional array looks like:
$new_codes = [
   0 => [
            'id' => 1,
            'code' => 'code1',
            ... another values
   ],
   1 => [
            'id' => 2,
            'code' => 'code2',
            ... another values
   ],
   2 => [
            'id' => 3,
            'code' => 'code3',
            ... another values
   ]
];
Another array is just plain indexed array with code values:
$old_codes = [
      'code1',
      'code2',
];
For this limited example, after filtering, $new_codes should only have index 2 because that value doesn't exist in $old_codes array.
I've tried using the code bellow, but because the arrays are so huge, the operation takes so long that I thought that I somehow created infinite loop, but it seems that checking if the values for over 500000 elements exist in another array that also has over half a million elements takes very long time.
// option 1
$new = array_filter($new_codes, function ($var) use ($old_codes) {
            return !in_array($var['code'], $old_codes);
        });
// option 2
$filtered = [];
foreach($new_codes as $code) {
    if(in_array($code['code']){
         continue;
     }
    $filtered[] = $code;
}
Any suggestions for more optimized solutions are welcome.
Thanks in advance.
