Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- public function testflatMapAssoc()
- {
- $array = array(
- 'a' => array(
- '1' => array('.' => 0, ',' => 0),
- '2' => array('.' => 0, ',' => 0),
- ),
- 'b' => array(
- '1' => array('.' => 0, ',' => 0),
- '2' => array('.' => 0, ',' => 0),
- ),
- );
- $keysList = array();
- $valuesList = array();
- Arrays::flatMapAssoc($array, function ($value, $keys) use (&$keysList, &$valuesList) {
- $keysList[] = $keys;
- $valuesList[] = $value;
- });
- $expectedKeysList = array(
- array('a', '1', '.'),
- array('a', '1', ','),
- array('a', '2', '.'),
- array('a', '2', ','),
- array('b', '1', '.'),
- array('b', '1', ','),
- array('b', '2', '.'),
- array('b', '2', ','),
- );
- $this->assertEquals($expectedKeysList, $keysList);
- $this->assertEquals(array_fill(0, 8, 0), $valuesList);
- }
- /**
- * @param array $array
- * @param callable $callback
- * @return array
- */
- public static function flatMapAssoc($array, $callback)
- {
- $callback = callback($callback);
- $walker = function ($array, $keys = array()) use (&$walker, $callback) {
- foreach ($array as $key => $value) {
- $currentKeys = $keys + array(count($keys) => $key);
- if (is_array($value)) {
- $walker($value, $currentKeys);
- continue;
- }
- $callback($value, $currentKeys);
- }
- };
- $walker($array);
- }
Advertisement
Add Comment
Please, Sign In to add comment