offsetExists($key)) return $array->offsetGet($key); else return $default; } else { if (!is_array($array)) $array = A::with($array); return A::get($array, $key, $default); } } /** spécifier la valeur d'une clé */ static final function set(&$array, $key, $value) { if ($array instanceof ArrayAccess) { $array->offsetSet($key, $value); } else { A::set($array, $key, $value); } return $value; } /** initialiser $dest avec les valeurs de $values */ static final function set_values(&$array, ?array $values): void { if ($values === null) return; foreach ($values as $key => $value) { self::set($array, $key, $value); } } /** incrémenter la valeur de la clé */ static final function inc(&$array, $key): int { if ($array instanceof ArrayAccess) { $value = (int)$array->offsetGet($key); $array->offsetSet($key, ++$value); return $value; } else { A::ensure_array($array); $value = (int)A::get($array, $key); return $array[$key] = ++$value; } } /** décrémenter la valeur de la clé */ static final function dec(&$array, $key, bool $allow_negative=false): int { if ($array instanceof ArrayAccess) { $value = (int)$array->offsetGet($key); if ($allow_negative || $value > 0) $array->offsetSet($key, --$value); return $value; } else { A::ensure_array($array); $value = (int)A::get($array, $key); if ($allow_negative || $value > 0) $array[$key] = --$value; return $value; } } /** * fusionner $merge dans la valeur de la clé, qui est d'abord transformé en * tableau si nécessaire */ static final function merge(&$array, $key, $merge): void { if ($array instanceof ArrayAccess) { $value = $array->offsetGet($key); A::merge($value, $merge); $array->offsetSet($key, $value); } else { A::ensure_array($array); A::merge($array[$key], $merge); } } /** * ajouter $value à la valeur de la clé, qui est d'abord transformé en * tableau si nécessaire */ static final function append(&$array, $key, $value): void { if ($array instanceof ArrayAccess) { $value = $array->offsetGet($key); A::set($value, null, $value); $array->offsetSet($key, $value); } else { A::ensure_array($array); A::set($array[$key], null, $value); } } }