diff --git a/src/A.php b/src/A.php index a044fb1..0958daa 100644 --- a/src/A.php +++ b/src/A.php @@ -35,5 +35,4 @@ class A { else $array = [$array]; return false; } - } diff --git a/src/cl.php b/src/cl.php index b6b4dfb..416b1cc 100644 --- a/src/cl.php +++ b/src/cl.php @@ -146,12 +146,34 @@ class cl { return $array !== null? array_keys($array): []; } + /** + * retourner un array avec les éléments retournés par l'itérateur. les clés + * numériques sont réordonnées, les clés chaine sont laissées en l'état + */ + static final function all(?iterable $iterable): array { + if ($iterable === null) return []; + if (is_array($iterable)) return $iterable; + $array = []; + foreach ($iterable as $key => $value) { + if (is_int($key)) $array[] = $value; + else $array[$key] = $value; + } + return $array; + } + /** * retourner la première valeur de $array ou $default si le tableau est null * ou vide */ - static final function first($array, $default=null) { - if (is_array($array)) return $array[array_key_first($array)]; + static final function first(?iterable $iterable, $default=null) { + if (is_array($iterable)) { + return $iterable[array_key_first($iterable)]; + } + if (is_iterable($iterable)) { + foreach ($iterable as $value) { + return $value; + } + } return $default; } @@ -159,9 +181,17 @@ class cl { * retourner la dernière valeur de $array ou $default si le tableau est null * ou vide */ - static final function last($array, $default=null) { - if (is_array($array)) return $array[array_key_last($array)]; - return $default; + static final function last(?iterable $iterable, $default=null) { + if (is_array($iterable)) { + return $iterable[array_key_last($iterable)]; + } + $value = $default; + if (is_iterable($iterable)) { + foreach ($iterable as $value) { + # parcourir tout l'iterateur pour avoir le dernier élément + } + } + return $value; } #############################################################################