3v4l.org

run code in 300+ PHP versions simultaneously
<?php // generic function to generate cross product of multi-dimensional array function arrayCrossProduct( array $data ) { $rowCount = 1; foreach( $data as &$datum ) { $datum = (array) $datum; $rowCount *= count( $datum ); reset( $datum ); // reset the array, just to be sure } unset( $datum ); // drop the reference, just to be safe $result = array(); while( $rowCount-- > 0 ) { $row = array(); foreach( $data as &$datum ) { $row[] = current( $datum ); } $result[] = $row; foreach( $data as &$datum ) { next( $datum ); if( !is_null( key( $datum ) ) ) { break; } reset( $datum ); } } return $result; } // example data $data = array( 'name' => 'Mike', 'country' => 'UK', 'prefers' => array( 'coffee', 'milk', 'bananas' ), 'age' => 25, 'parents' => array( 'John', 'Janine' ), 'children' => array( 'Jack', 'Jill', 'Joline' ) ); $i = 1; foreach( arrayCrossProduct( $data ) as $row ) { echo str_pad( (string) $i++, 2, " ", STR_PAD_LEFT ) . '. ' . implode( ', ', $row ) . PHP_EOL; }
Output for 5.1.0 - 5.1.6, 5.2.0 - 5.2.17, 5.3.0 - 5.3.29, 5.4.0 - 5.4.45, 5.5.0 - 5.5.38, 5.6.0 - 5.6.40, 7.0.0 - 7.0.33, 7.1.0 - 7.1.33, 7.2.0 - 7.2.34, 7.3.0 - 7.3.33, 7.4.0 - 7.4.33, 8.0.0 - 8.0.30, 8.1.0 - 8.1.28, 8.2.0 - 8.2.18, 8.3.0 - 8.3.4, 8.3.6
1. Mike, UK, coffee, 25, John, Jack 2. Mike, UK, milk, 25, John, Jack 3. Mike, UK, bananas, 25, John, Jack 4. Mike, UK, coffee, 25, Janine, Jack 5. Mike, UK, milk, 25, Janine, Jack 6. Mike, UK, bananas, 25, Janine, Jack 7. Mike, UK, coffee, 25, John, Jill 8. Mike, UK, milk, 25, John, Jill 9. Mike, UK, bananas, 25, John, Jill 10. Mike, UK, coffee, 25, Janine, Jill 11. Mike, UK, milk, 25, Janine, Jill 12. Mike, UK, bananas, 25, Janine, Jill 13. Mike, UK, coffee, 25, John, Joline 14. Mike, UK, milk, 25, John, Joline 15. Mike, UK, bananas, 25, John, Joline 16. Mike, UK, coffee, 25, Janine, Joline 17. Mike, UK, milk, 25, Janine, Joline 18. Mike, UK, bananas, 25, Janine, Joline
Output for 8.3.5
Warning: PHP Startup: Unable to load dynamic library 'sodium.so' (tried: /usr/lib/php/8.3.5/modules/sodium.so (libsodium.so.23: cannot open shared object file: No such file or directory), /usr/lib/php/8.3.5/modules/sodium.so.so (/usr/lib/php/8.3.5/modules/sodium.so.so: cannot open shared object file: No such file or directory)) in Unknown on line 0 1. Mike, UK, coffee, 25, John, Jack 2. Mike, UK, milk, 25, John, Jack 3. Mike, UK, bananas, 25, John, Jack 4. Mike, UK, coffee, 25, Janine, Jack 5. Mike, UK, milk, 25, Janine, Jack 6. Mike, UK, bananas, 25, Janine, Jack 7. Mike, UK, coffee, 25, John, Jill 8. Mike, UK, milk, 25, John, Jill 9. Mike, UK, bananas, 25, John, Jill 10. Mike, UK, coffee, 25, Janine, Jill 11. Mike, UK, milk, 25, Janine, Jill 12. Mike, UK, bananas, 25, Janine, Jill 13. Mike, UK, coffee, 25, John, Joline 14. Mike, UK, milk, 25, John, Joline 15. Mike, UK, bananas, 25, John, Joline 16. Mike, UK, coffee, 25, Janine, Joline 17. Mike, UK, milk, 25, Janine, Joline 18. Mike, UK, bananas, 25, Janine, Joline
Output for 5.0.0 - 5.0.5
Parse error: parse error, unexpected T_ARRAY, expecting '&' or T_VARIABLE in /in/4EtIF on line 4
Process exited with code 255.
Output for 4.4.2 - 4.4.9
Parse error: syntax error, unexpected T_ARRAY, expecting ')' in /in/4EtIF on line 4
Process exited with code 255.
Output for 4.3.0 - 4.3.1, 4.3.5 - 4.3.11, 4.4.0 - 4.4.1
Parse error: parse error, unexpected T_ARRAY, expecting ')' in /in/4EtIF on line 4
Process exited with code 255.
Output for 4.3.2 - 4.3.4
Parse error: parse error, expecting `')'' in /in/4EtIF on line 4
Process exited with code 255.

preferences:
391.64 ms | 401 KiB | 466 Q