note 124533 added to function.array-map

From: Date: Wed, 25 Dec 2019 01:37:35 +0000
Subject: note 124533 added to function.array-map
Groups: php.notes 
Request: Send a blank email to php-notes+get-213616@lists.php.net to get a copy of this message
Short-hands to "array_map", fill parameter arrays: <?php /** * Applies the callback to the values of the given list. Mix array_map() and iterator_apply(). * * @param callable $callback Callback function to run for each value in list. * @param array $parameters Callback parameters, contain the keys "values" and "keys"(optional, auto fill). * @return array */ function arr_map(?callable $callback, array $parameters): array { if (empty($parameters['values'])) { throw new \InvalidArgumentException('Parameters must contain the key "values"'); } if (! \is_iterable($parameters['values'])) { throw new \InvalidArgumentException('Parameter "values" must be iterable'); } if (\is_object($parameters['values'])) { $parameters['values'] = \iterator_to_array($parameters['values']); } $keys = \array_keys($parameters['values']); \array_walk( $parameters, function (&$value, $key) use ($keys) { if ($key == 'keys') { $value = $keys; } elseif ($key != 'values') { $value = \array_fill_keys($keys, $value); } } ); return \array_map($callback, ...\array_values($parameters)); } ?> Usage, add prefix to values: <?php $array = range('a', 'z'); $result = arr_map('sprintf', ['prefix_%s', 'value' => $array])); $iterator = new ArrayIterator($array); $result2 = arr_map('sprintf', ['prefix_%s', 'values' => $iterator]); ?> ---- Server IP: 45.112.84.4 Probable Submitter: 185.85.3.168 (proxied: 31.129.195.249) ---- Manual Page -- http://php.net/manual/en/function.array-map.php Edit -- https://master.php.net/note/edit/124533 Del: integrated -- https://master.php.net/note/delete/124533/integrated Del: useless -- https://master.php.net/note/delete/124533/useless Del: bad code -- https://master.php.net/note/delete/124533/bad+code Del: spam -- https://master.php.net/note/delete/124533/spam Del: non-english -- https://master.php.net/note/delete/124533/non-english Del: in docs -- https://master.php.net/note/delete/124533/in+docs Del: other reasons-- https://master.php.net/note/delete/124533 Reject -- https://master.php.net/note/reject/124533 Search -- https://master.php.net/manage/user-notes.php

« previous php.notes (#213616) next »