Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- $test_array = array("first_key" => "first_value",
- "second_key" => "second_value");
- var_dump(array_map(function($a, $b) { return "$a loves $b"; },
- array_keys($test_array),
- array_values($test_array)));
- array(2) {
- [0]=>
- string(27) "first_key loves first_value"
- [1]=>
- string(29) "second_key loves second_value"
- }
- $test_array = array("first_key" => "first_value",
- "second_key" => "second_value");
- array_walk($test_array, function(&$a, $b) { $a = "$b loves $a"; });
- var_dump($test_array);
- $states = array('az' => 'Arizona', 'al' => 'Alabama');
- array_map(function ($short, $long) {
- return array(
- 'short' => $short,
- 'long' => $long
- );
- }, array_keys($states), $states);
- // produces:
- array(
- array('short' => 'az', 'long' => 'Arizona'),
- array('short' => 'al', 'long' => 'Alabama')
- )
- $test_array = array("first_key" => "first_value",
- "second_key" => "second_value");
- var_dump(
- array_map(
- function($key) use ($test_array) { return "$key loves ${test_array[$key]}"; },
- array_keys($test_array)
- )
- );
- function array_map_assoc(callable $f, array $a) {
- return array_column(array_map($f, array_keys($a), $a), 1, 0);
- }
- $ordinals = [
- 'first' => '1st',
- 'second' => '2nd',
- 'third' => '3rd',
- ];
- $func = function ($k, $v) {
- return ['new ' . $k, 'new ' . $v];
- };
- var_dump(array_map_assoc($func, $ordinals));
- array(3) {
- ["new first"]=>
- string(7) "new 1st"
- ["new second"]=>
- string(7) "new 2nd"
- ["new third"]=>
- string(7) "new 3rd"
- }
- function array_map_assoc_curried(callable $f) {
- return function (array $a) use ($f) {
- return array_column(array_map($f, array_keys($a), $a), 1, 0);
- };
- }
- ...
- $my_mapping = array_map_assoc_curried($func);
- var_dump($my_mapping($ordinals));
- function array_map_assoc(callable $f, array $a) {
- return array_merge(...array_map($f, array_keys($a), $a));
- }
- function array_map_assoc(callable $f, array $a) {
- return array_reduce(array_map($f, array_keys($a), $a), function (array $acc, array $a) {
- return $acc + $a;
- }, []);
- }
- $ordinals = [
- 'first' => '1st',
- 'second' => '2nd',
- 'third' => '3rd',
- ];
- $func = function ($k, $v) {
- return ['new ' . $k => 'new ' . $v];
- };
- var_dump(array_map_assoc($func, $ordinals));
- $test_array = ["first_key" => "first_value",
- "second_key" => "second_value"];
- $array_map_assoc = function (callable $f, array $a) {
- return array_column(array_map($f, array_keys($a), $a), 1, 0);
- };
- $f = function ($key, $value) {
- return [$key, $key . ' loves ' . $value];
- };
- var_dump(array_values($array_map_assoc($f, $test_array)));
- $test_array = ["first_key" => "first_value",
- "second_key" => "second_value"];
- $array_map_assoc = function (callable $f, array $a) {
- return array_map($f, array_keys($a), $a);
- };
- $f = function ($key, $value) {
- return $key . ' loves ' . $value;
- };
- var_dump($array_map_assoc($f, $test_array));
- $test_array = array("first_key" => "first_value",
- "second_key" => "second_value");
- $result_array = array();
- array_walk($test_array,
- function($a, $b) use (&$result_array)
- { $result_array[] = "$b loves $a"; },
- $result_array);
- var_dump($result_array);
- $mapped_array = from($test_array)
- ->select(function ($v, $k) { return "$k loves $v"; })
- ->toArray();
- $mapped_iterator = from($test_array)->select('"$k loves $v"');
- function map($array, callable $fn) {
- foreach ($array as $k => &$v) $v = call_user_func($fn, $k, $v);
- return $array;
- }
- function map($array, callable $fn = null) {
- return array_map($fn, array_keys($array), $array);
- }
- function array_map_($callback, $arr) {
- if (!is_callable($callback))
- return $arr;
- $result = array_walk($arr, function(&$value, $key) use ($callback) {
- $value = call_user_func($callback, $key, $value);
- });
- if (!$result)
- return false;
- return $arr;
- }
- $test_array = array("first_key" => "first_value",
- "second_key" => "second_value");
- var_dump(array_map_(function($key, $value){
- return $key . " loves " . $value;
- }, $arr));
- array (
- 'first_key' => 'first_key loves first_value,
- 'second_key' => 'second_key loves second_value',
- )
- array_values(array_map_(function($key, $value){
- return $key . " loves " . $value;
- }, $test_array))
- function array_map_assoc(){
- if(func_num_args() < 2) throw new BadFuncionCallException('Missing parameters');
- $args = func_get_args();
- $callback = $args[0];
- if(!is_callable($callback)) throw new InvalidArgumentException('First parameter musst be callable');
- $arrays = array_slice($args, 1);
- array_walk($arrays, function(&$a){
- $a = (array)$a;
- reset($a);
- });
- $results = array();
- $max_length = max(array_map('count', $arrays));
- $arrays = array_map(function($pole) use ($max_length){
- return array_pad($pole, $max_length, null);
- }, $arrays);
- for($i=0; $i < $max_length; $i++){
- $elements = array();
- foreach($arrays as &$v){
- $elements[] = each($v);
- }
- unset($v);
- $out = call_user_func_array($callback, $elements);
- if($out === null) continue;
- $val = isset($out[1]) ? $out[1] : null;
- if(isset($out[0])){
- $results[$out[0]] = $val;
- }else{
- $results[] = $val;
- }
- }
- return $results;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement