-2

Whats the quickest way to find the values present in all arrays.

$arrayOfArrays[] = [76,964,34,66775,3,88,99,69];
$arrayOfArrays[] = [69,55,65,657,436,6345,8654];
$arrayOfArrays[] = [54,543,496,3455,47556,69,234,436557];
$arrayOfArrays[] = [4564536,4543,777,3445,43768,2334,69,35,574];

Expected output would be [69]

Mr J
  • 2,655
  • 4
  • 37
  • 58
  • 1
    I think [array_intersect](https://www.php.net/manual/en/function.array-intersect.php) may be a good start. – Hamza Abdaoui Jul 02 '20 at 10:56
  • yeah, i couldn't see much about the third parameter, think this is what I need https://stackoverflow.com/questions/43710980/array-intersect-with-dynamic-length-of-arguments – Mr J Jul 02 '20 at 11:00
  • 2
    Exact duplicate of [Find common values in multiple arrays with PHP](https://stackoverflow.com/questions/5299608/find-common-values-in-multiple-arrays-with-php) – MrUpsidown Jul 02 '20 at 11:33

2 Answers2

1
$arrayOfArrays[] = [76,964,34,66775,3,88,99,69];
$arrayOfArrays[] = [69,55,65,657,436,6345,8654];
$arrayOfArrays[] = [54,543,496,3455,47556,69,234,436557];
$arrayOfArrays[] = [4564536,4543,777,3445,43768,2334,69,35,574];

$result = call_user_func_array('array_intersect', $arrayOfArrays);

Output is 69

Mr J
  • 2,655
  • 4
  • 37
  • 58
1

Use array_intersect

$arrayOfArrays[] = [76,964,34,66775,3,88,99,69];
$arrayOfArrays[] = [69,55,65,657,436,6345,8654];
$arrayOfArrays[] = [54,543,496,3455,47556,69,234,436557];
$arrayOfArrays[] = [4564536,4543,777,3445,43768,2334,69,35,574];

$intersect = array_intersect(
    $arrayOfArrays[0],$arrayOfArrays[1],$arrayOfArrays[2],$arrayOfArrays[3]
);

Or recursively like the answer by @Mr J

$arrayOfArrays[] = [76,964,34,66775,3,88,99,69];
$arrayOfArrays[] = [69,55,65,657,436,6345,8654];
$arrayOfArrays[] = [54,543,496,3455,47556,69,234,436557];
$arrayOfArrays[] = [4564536,4543,777,3445,43768,2334,69,35,574];

$intersect = call_user_func_array('array_intersect', $arrayOfArrays);
Oussama
  • 595
  • 5
  • 16