<?php
function mapCallback1($callback, $array){
$output = [];
array_map(function($value) use ($callback, &$output) {
$callback($value, function($value) use (&$output) {
$output[] = $value;
});
}, $array);
return $output;
}
function mapCallback2($callback, $array){
$output = [];
$push = function ($value) use (&$output) {
$output[] = $value;
};
foreach ($array as $value) {
$callback($value, $push);
}
return $output;
}
$square = function ($x, $push) {
$push($x * $x);
};
var_dump(mapCallback1($square, [1, 2, 3]));
var_dump(mapCallback2($square, [1, 2, 3]));
- Output for 5.6.0 - 5.6.40, 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.28, 8.2.0 - 8.2.18, 8.3.0 - 8.3.7
- array(3) {
[0]=>
int(1)
[1]=>
int(4)
[2]=>
int(9)
}
array(3) {
[0]=>
int(1)
[1]=>
int(4)
[2]=>
int(9)
}
preferences:
196.45 ms | 404 KiB | 289 Q