3v4l.org

run code in 300+ PHP versions simultaneously
<?php $arr = [ [ 'cards1' => [ 'A', 'b', 'c' ], 'cards2' => [ 'A', 'e', 'd' ], 'cards3' => [ 'A', 'o', 'l' ] ], [ 'cards1' => [ 'A', 'b', 'c' ], 'cards2' => [ 'A', 'r', 'c' ], 'cards3' => [ 'A', 'bbb', 'yyy' ] ], [ 'cards1' => [ 'B', 'bbb', 'B' ], 'cards2' => [ 'B', ], 'cards3' => [ 'B', ] ] ]; $set = []; $except = []; foreach($arr as $data){ foreach($data as $key => $cards){ if($key === 'cards1'){ $except[$data[$key][0]] = true; break; } } } foreach($arr as &$data){ foreach($data as $key => &$cards){ foreach($cards as $index => $value){ if(isset($set[$value]) && !isset($except[$value])) unset($cards[$index]); else $set[$value] = true; } } } print_r($arr);
Output for 7.1.25 - 7.1.33, 7.2.0 - 7.2.33, 7.3.0 - 7.3.33, 7.4.0 - 7.4.33, 8.0.0 - 8.0.30, 8.1.0 - 8.1.33, 8.2.0 - 8.2.29, 8.3.0 - 8.3.27, 8.4.1 - 8.4.14
Array ( [0] => Array ( [cards1] => Array ( [0] => A [1] => b [2] => c ) [cards2] => Array ( [0] => A [1] => e [2] => d ) [cards3] => Array ( [0] => A [1] => o [2] => l ) ) [1] => Array ( [cards1] => Array ( [0] => A ) [cards2] => Array ( [0] => A [1] => r ) [cards3] => Array ( [0] => A [1] => bbb [2] => yyy ) ) [2] => Array ( [cards1] => Array ( [0] => B [2] => B ) [cards2] => Array ( [0] => B ) [cards3] => Array ( [0] => B ) ) )

preferences:
146.31 ms | 412 KiB | 5 Q