fork download
  1. <?php
  2.  
  3. function map_impl($arr, $f, $idx)
  4. {
  5. return array_map($f, array_intersect_key($arr, $idx));
  6. }
  7.  
  8. function map($arr, $f)
  9. {
  10. return map_impl($arr, $f, range(0, count($arr) - 1));
  11. }
  12.  
  13. function MyFunctor($arg)
  14. {
  15. return floatval($arg * $arg) / 2.0;
  16. };
  17.  
  18. function main()
  19. {
  20. $arr = Array(1, 2, 3, 4, 5, 6, 7, 8, 9, 10);
  21.  
  22. $arrMappedFunctor = map($arr, "MyFunctor");
  23. $arrMappedLambda = map($arr, function($x) { return floatval($x * $x) / 2.0; });
  24.  
  25. foreach ($arrMappedFunctor as $x) {
  26. echo strval($x) . ' ';
  27. }
  28. echo PHP_EOL;
  29. foreach ($arrMappedLambda as $x) {
  30. echo strval($x) . ' ';
  31. }
  32. echo PHP_EOL;
  33. return 0;
  34. }
  35.  
  36. main();
  37.  
Success #stdin #stdout 0.03s 23680KB
stdin
Standard input is empty
stdout
0.5 2 4.5 8 12.5 18 24.5 32 40.5 50 
0.5 2 4.5 8 12.5 18 24.5 32 40.5 50