Advertisement
Guest User

Untitled

a guest
Jul 27th, 2017
50
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 5.46 KB | None | 0 0
  1. $test_array = array("first_key" => "first_value",
  2. "second_key" => "second_value");
  3.  
  4. var_dump(array_map(function($a, $b) { return "$a loves $b"; },
  5. array_keys($test_array),
  6. array_values($test_array)));
  7.  
  8. array(2) {
  9. [0]=>
  10. string(27) "first_key loves first_value"
  11. [1]=>
  12. string(29) "second_key loves second_value"
  13. }
  14.  
  15. $test_array = array("first_key" => "first_value",
  16. "second_key" => "second_value");
  17. array_walk($test_array, function(&$a, $b) { $a = "$b loves $a"; });
  18. var_dump($test_array);
  19.  
  20. $states = array('az' => 'Arizona', 'al' => 'Alabama');
  21.  
  22. array_map(function ($short, $long) {
  23. return array(
  24. 'short' => $short,
  25. 'long' => $long
  26. );
  27. }, array_keys($states), $states);
  28.  
  29. // produces:
  30. array(
  31. array('short' => 'az', 'long' => 'Arizona'),
  32. array('short' => 'al', 'long' => 'Alabama')
  33. )
  34.  
  35. $test_array = array("first_key" => "first_value",
  36. "second_key" => "second_value");
  37.  
  38. var_dump(
  39. array_map(
  40. function($key) use ($test_array) { return "$key loves ${test_array[$key]}"; },
  41. array_keys($test_array)
  42. )
  43. );
  44.  
  45. function array_map_assoc(callable $f, array $a) {
  46. return array_column(array_map($f, array_keys($a), $a), 1, 0);
  47. }
  48.  
  49. $ordinals = [
  50. 'first' => '1st',
  51. 'second' => '2nd',
  52. 'third' => '3rd',
  53. ];
  54.  
  55. $func = function ($k, $v) {
  56. return ['new ' . $k, 'new ' . $v];
  57. };
  58.  
  59. var_dump(array_map_assoc($func, $ordinals));
  60.  
  61. array(3) {
  62. ["new first"]=>
  63. string(7) "new 1st"
  64. ["new second"]=>
  65. string(7) "new 2nd"
  66. ["new third"]=>
  67. string(7) "new 3rd"
  68. }
  69.  
  70. function array_map_assoc_curried(callable $f) {
  71. return function (array $a) use ($f) {
  72. return array_column(array_map($f, array_keys($a), $a), 1, 0);
  73. };
  74. }
  75.  
  76. ...
  77. $my_mapping = array_map_assoc_curried($func);
  78. var_dump($my_mapping($ordinals));
  79.  
  80. function array_map_assoc(callable $f, array $a) {
  81. return array_merge(...array_map($f, array_keys($a), $a));
  82. }
  83.  
  84. function array_map_assoc(callable $f, array $a) {
  85. return array_reduce(array_map($f, array_keys($a), $a), function (array $acc, array $a) {
  86. return $acc + $a;
  87. }, []);
  88. }
  89.  
  90. $ordinals = [
  91. 'first' => '1st',
  92. 'second' => '2nd',
  93. 'third' => '3rd',
  94. ];
  95.  
  96. $func = function ($k, $v) {
  97. return ['new ' . $k => 'new ' . $v];
  98. };
  99.  
  100. var_dump(array_map_assoc($func, $ordinals));
  101.  
  102. $test_array = ["first_key" => "first_value",
  103. "second_key" => "second_value"];
  104.  
  105. $array_map_assoc = function (callable $f, array $a) {
  106. return array_column(array_map($f, array_keys($a), $a), 1, 0);
  107. };
  108.  
  109. $f = function ($key, $value) {
  110. return [$key, $key . ' loves ' . $value];
  111. };
  112.  
  113. var_dump(array_values($array_map_assoc($f, $test_array)));
  114.  
  115. $test_array = ["first_key" => "first_value",
  116. "second_key" => "second_value"];
  117.  
  118. $array_map_assoc = function (callable $f, array $a) {
  119. return array_map($f, array_keys($a), $a);
  120. };
  121.  
  122. $f = function ($key, $value) {
  123. return $key . ' loves ' . $value;
  124. };
  125.  
  126. var_dump($array_map_assoc($f, $test_array));
  127.  
  128. $test_array = array("first_key" => "first_value",
  129. "second_key" => "second_value");
  130.  
  131. $result_array = array();
  132. array_walk($test_array,
  133. function($a, $b) use (&$result_array)
  134. { $result_array[] = "$b loves $a"; },
  135. $result_array);
  136. var_dump($result_array);
  137.  
  138. $mapped_array = from($test_array)
  139. ->select(function ($v, $k) { return "$k loves $v"; })
  140. ->toArray();
  141.  
  142. $mapped_iterator = from($test_array)->select('"$k loves $v"');
  143.  
  144. function map($array, callable $fn) {
  145. foreach ($array as $k => &$v) $v = call_user_func($fn, $k, $v);
  146. return $array;
  147. }
  148.  
  149. function map($array, callable $fn = null) {
  150. return array_map($fn, array_keys($array), $array);
  151. }
  152.  
  153. function array_map_($callback, $arr) {
  154. if (!is_callable($callback))
  155. return $arr;
  156.  
  157. $result = array_walk($arr, function(&$value, $key) use ($callback) {
  158. $value = call_user_func($callback, $key, $value);
  159. });
  160.  
  161. if (!$result)
  162. return false;
  163.  
  164. return $arr;
  165. }
  166.  
  167. $test_array = array("first_key" => "first_value",
  168. "second_key" => "second_value");
  169.  
  170. var_dump(array_map_(function($key, $value){
  171. return $key . " loves " . $value;
  172. }, $arr));
  173.  
  174. array (
  175. 'first_key' => 'first_key loves first_value,
  176. 'second_key' => 'second_key loves second_value',
  177. )
  178.  
  179. array_values(array_map_(function($key, $value){
  180. return $key . " loves " . $value;
  181. }, $test_array))
  182.  
  183. function array_map_assoc(){
  184. if(func_num_args() < 2) throw new BadFuncionCallException('Missing parameters');
  185.  
  186. $args = func_get_args();
  187. $callback = $args[0];
  188.  
  189. if(!is_callable($callback)) throw new InvalidArgumentException('First parameter musst be callable');
  190.  
  191. $arrays = array_slice($args, 1);
  192.  
  193. array_walk($arrays, function(&$a){
  194. $a = (array)$a;
  195. reset($a);
  196. });
  197.  
  198. $results = array();
  199. $max_length = max(array_map('count', $arrays));
  200.  
  201. $arrays = array_map(function($pole) use ($max_length){
  202. return array_pad($pole, $max_length, null);
  203. }, $arrays);
  204.  
  205. for($i=0; $i < $max_length; $i++){
  206. $elements = array();
  207. foreach($arrays as &$v){
  208. $elements[] = each($v);
  209. }
  210. unset($v);
  211.  
  212. $out = call_user_func_array($callback, $elements);
  213.  
  214. if($out === null) continue;
  215.  
  216. $val = isset($out[1]) ? $out[1] : null;
  217.  
  218. if(isset($out[0])){
  219. $results[$out[0]] = $val;
  220. }else{
  221. $results[] = $val;
  222. }
  223. }
  224.  
  225. return $results;
  226. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement