3v4l.org

run code in 300+ PHP versions simultaneously
<?php $in = [ ['id' => 1, 'currency' => 'EUR', 'name' => 'NL'], ['id' => 2, 'currency' => 'EUR', 'name' => 'DE'], ['id' => 3, 'currency' => 'EUR', 'name' => 'FR'], ['id' => 4, 'currency' => 'EUR', 'name' => 'BE'], ['id' => 5, 'currency' => 'USD', 'name' => 'US'], ['id' => 6, 'currency' => 'Rand', 'name' => 'SAF'], ['id' => 7, 'currency' => 'Rubbles', 'name' => 'RUS'], ['id' => 8, 'currency' => 'EUR', 'name' => 'IT'], ['id' => 9, 'currency' => 'Pound', 'name' => 'GB'], ]; $query = ['currency' => 'EUR', 'id' => 8]; //search needles $out = array_filter($in, function(array $candidate) use ($query) { foreach ($query as $key => $predicate) { if (isset($candidate[$key]) && $candidate[$key] !== $predicate) { return false; } } return true; }); print_r($out);
Output for 7.1.25 - 7.1.28, 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.27, 8.2.0 - 8.2.18, 8.3.0 - 8.3.6
Array ( [7] => Array ( [id] => 8 [currency] => EUR [name] => IT ) )

preferences:
155.54 ms | 403 KiB | 162 Q