diff --git a/src/cl.php b/src/cl.php index 3b557e2..e5dbf11 100644 --- a/src/cl.php +++ b/src/cl.php @@ -192,6 +192,22 @@ class cl { return $dest; } + /** + * méthode de convenance qui sélectionne certaines clés de $array avec + * {@link self::select()} puis merge le tableau $merge au résultat. + */ + static final function selectm($array, ?array $mappings, ?array $merge=null): array { + return cl::merge(self::select($array, $mappings), $merge); + } + + /** + * méthode de convenance qui merge $merge dans $array puis sélectionne + * certaines clés avec {@link self::select()} + */ + static final function mselect($array, ?array $merge, ?array $mappings): array { + return self::select(cl::merge($array, $merge), $mappings); + } + /** * si $array est un array ou une instance de ArrayAccess, créer ou modifier * l'élément dont la clé est $key @@ -343,7 +359,7 @@ class cl { * - [$key => $pkey] --> $dest[$key] = self::pget($array, $pkey) * - [$key => null] --> $dest[$key] = null * - [$pkey] --> $dest[$key] = self::pget($array, $pkey) - * avec $key = implode(".", $pkey)) + * avec $key = implode("__", $pkey)) * - [null] --> $dest[] = null * - [false] --> NOP */ @@ -354,16 +370,13 @@ class cl { if ($key === $index) { $index++; if ($pkey === null) continue; - if (!is_array($pkey)) $pkey = explode(".", strval($pkey)); $value = self::pget($array, $pkey); - $key = implode(".", $pkey); + if (!is_array($pkey)) $pkey = explode(".", strval($pkey)); + $key = implode("__", $pkey); + } elseif ($pkey === null) { + $value = null; } else { - if ($pkey === null) { - $value = null; - } else { - if (!is_array($pkey)) $pkey = explode(".", strval($pkey)); - $value = self::pget($array, $pkey); - } + $value = self::pget($array, $pkey); } $dest[$key] = $value; }