HosipLan

Untitled

Oct 9th, 2011
168
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
PHP 1.33 KB | None | 0 0
  1.     public function testflatMapAssoc()
  2.     {
  3.         $array = array(
  4.             'a' => array(
  5.                 '1' => array('.' => 0, ',' => 0),
  6.                 '2' => array('.' => 0, ',' => 0),
  7.             ),
  8.             'b' => array(
  9.                 '1' => array('.' => 0, ',' => 0),
  10.                 '2' => array('.' => 0, ',' => 0),
  11.             ),
  12.         );
  13.  
  14.         $keysList = array();
  15.         $valuesList = array();
  16.         Arrays::flatMapAssoc($array, function ($value, $keys) use (&$keysList, &$valuesList) {
  17.             $keysList[] = $keys;
  18.             $valuesList[] = $value;
  19.         });
  20.  
  21.         $expectedKeysList = array(
  22.             array('a', '1', '.'),
  23.             array('a', '1', ','),
  24.             array('a', '2', '.'),
  25.             array('a', '2', ','),
  26.             array('b', '1', '.'),
  27.             array('b', '1', ','),
  28.             array('b', '2', '.'),
  29.             array('b', '2', ','),
  30.         );
  31.         $this->assertEquals($expectedKeysList, $keysList);
  32.         $this->assertEquals(array_fill(0, 8, 0), $valuesList);
  33.     }
  34.  
  35.  
  36.  
  37.     /**
  38.      * @param array $array
  39.      * @param callable $callback
  40.      * @return array
  41.      */
  42.     public static function flatMapAssoc($array, $callback)
  43.     {
  44.         $callback = callback($callback);
  45.         $walker = function ($array, $keys = array()) use (&$walker, $callback) {
  46.             foreach ($array as $key => $value) {
  47.                 $currentKeys = $keys + array(count($keys) => $key);
  48.                 if (is_array($value)) {
  49.                     $walker($value, $currentKeys);
  50.                     continue;
  51.                 }
  52.                 $callback($value, $currentKeys);
  53.             }
  54.         };
  55.  
  56.         $walker($array);
  57.     }
  58.  
Advertisement
Add Comment
Please, Sign In to add comment