note 124533 added to function.array-map
| From: | shaman_master.list.ru via php-notes | 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