3v4l.org

run code in 300+ PHP versions simultaneously
<?php function array_map_userland_one($callback, array $one) { if ($callback) { // return array_map($callback, $one); echo "- with callback - apply\n"; $return = []; foreach ($one as $key => $value) { $return[$key] = $callback($value); } return $return; } else { // return array_map(function($value) { return $value; }, $one); echo "- without callback - return copy\n"; return $one; } } function array_map_userland_many($callback, array $many) { // for simplicity, assuming non-associative arrays all of the same size if ($callback) { // return array_map($callback, ...$many); echo "- with callback - apply using array of values\n"; $return = []; for ($i = 0; $i < count($many[0]); $i++) { $args = []; foreach ($many as $array) { $args[] = $array[$i]; } $return[$i] = $callback(...$args); } return $return; } else { // return array_map(function(...$values) { return $values; }, ...$many); echo "- without callback - use array of values\n"; $return = []; for ($i = 0; $i < count($many[0]); $i++) { $return[$i] = []; foreach ($many as $array) { $return[$i][] = $array[$i]; } } return $return; } } function array_map_userland($callback, ...$arrays) { if (count($arrays) == 1) { echo "- one array\n"; return array_map_userland_one($callback, $arrays[0]); } else { echo "- many arrays\n"; return array_map_userland_many($callback, $arrays); } } $two_item_array = [["abc", "def"], ["ghi", "jkl"]]; $one_item_array = [["abc", "def"]]; echo "Two arrays:\n"; print_r(array_map_userland(null, ...$two_item_array)); echo "One array:\n"; print_r(array_map_userland(null, ...$one_item_array));
Output for 5.6.38, 7.0.0 - 7.0.33, 7.1.0 - 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.27, 8.2.0 - 8.2.17, 8.3.0 - 8.3.4
Two arrays: - many arrays - without callback - use array of values Array ( [0] => Array ( [0] => abc [1] => ghi ) [1] => Array ( [0] => def [1] => jkl ) ) One array: - one array - without callback - return copy Array ( [0] => abc [1] => def )

preferences:
196.78 ms | 404 KiB | 241 Q