rosavox/lib/alveolata/map/functions.php

62 lines
1.1 KiB
PHP
Raw Normal View History

2025-05-23 07:33:29 +00:00
<?php
namespace alveolata\map;
// require_once(DIR_ALVEOLATA . '/definitions.php');
/**
* @param array $map {map<string,§y>}
* @param \Closure $transformator {function<§x,string,§y>}
* @return array
* @author Christian Fraß <frass@greenscale.de>
*/
function map/*<§x,§y>*/(
array $map,
\Closure $transformator
) : array
{
$map_ = [];
foreach ($map as $key => $value) {
$value_ = $transformator($value, $key);
$map_[$key] = $value_;
}
return $map_;
}
/**
* @param array $pairs {list<record<key:string,value:§x>>}
* @return array {map<string,§x>}
* @author Christian Fraß <frass@greenscale.de>
*/
function from_pairs/*<§x>*/(
array $pairs
) : array
{
$map = [];
foreach ($pairs as $pair) {
$map[$pair['key']] = $pair['value'];
}
return $map;
}
/**
* @param array $map {map<string,§x>}
* @return array {list<record<key:string,value:§x>>}
* @author Christian Fraß <frass@greenscale.de>
*/
function to_pairs/*<§x>*/(
array $map
) : array
{
$pairs = [];
foreach ($map as $key => $value) {
\array_push($pairs, ['key' => $key, 'value' => $value]);
}
return $pairs;
}
?>