ajout cl::delv

This commit is contained in:
Jephté Clain 2025-04-30 08:23:06 +04:00
parent aabdb3f765
commit 87e262cfe2

View File

@ -302,6 +302,27 @@ class cl {
} }
} }
/**
* si $array est un array ou une instance de ArrayAccess&Traversable,
* supprimer le premier élément dont la valeur est $value
*
* @param array|ArrayAccess $array
*/
static final function delv(&$array, $value, bool $strict=false): void {
if (is_array($array)) {
$key = array_search($value, $array, $strict);
if ($key !== false) unset($array[$key]);
} elseif ($array instanceof ArrayAccess && $array instanceof Traversable) {
$found = false;
foreach ($array as $key => $val) {
if ($strict) $found = $val === $value;
else $found = $val == $value;
if ($found) break;
}
if ($found) $array->offsetUnset($key);
}
}
/** retourner le nombre d'éléments de $array */ /** retourner le nombre d'éléments de $array */
static final function count(?array $array): int { static final function count(?array $array): int {
return $array !== null? count($array): 0; return $array !== null? count($array): 0;