ajout cl::split_assoc
This commit is contained in:
parent
96e046d5bf
commit
5652d38073
@ -923,4 +923,48 @@ class cl {
|
|||||||
A::usort($array, $keys, $assoc);
|
A::usort($array, $keys, $assoc);
|
||||||
return $array;
|
return $array;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#############################################################################
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Extraire d'un tableau les clés séquentielles et les clés associatives
|
||||||
|
*
|
||||||
|
* Retourner une liste [$list, $assoc] où $list est un tableau avec uniquement
|
||||||
|
* les valeurs des clés séquentielles et $assoc est un tableau avec uniquement
|
||||||
|
* les valeurs des clés associatives. S'il n'existe aucune clé séquentielle
|
||||||
|
* (resp. aucune clé associative), $list (resp. $assoc) vaut null.
|
||||||
|
*
|
||||||
|
* Par exemple: split_assoc(["a", "b" => "c"]) retourne [["a"], ["b" => "c"]]
|
||||||
|
*/
|
||||||
|
static final function split_assoc(?array $array): array {
|
||||||
|
$list = null;
|
||||||
|
$assoc = null;
|
||||||
|
if ($array !== null) {
|
||||||
|
$i = 0;
|
||||||
|
foreach ($array as $key => $value) {
|
||||||
|
if ($key === $i) {
|
||||||
|
$list[] = $value;
|
||||||
|
$i++;
|
||||||
|
} else {
|
||||||
|
$assoc[$key] = $value;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return [$list, $assoc];
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Joindre en un seul tableau un tableau avec des clés séquentielles et un
|
||||||
|
* tableau avec des clés associatives.
|
||||||
|
*
|
||||||
|
* Si $list_first==true, les clés séquentielles arrivent d'abord, ensuite les
|
||||||
|
* clés associatives. Sinon, ce sont les clés associatives qui arrivent d'abord
|
||||||
|
*/
|
||||||
|
static final function merge_assoc(?array &$array, ?array $list, ?array $assoc, bool $list_first=false): void {
|
||||||
|
if ($list === null && $assoc === null) $array = [];
|
||||||
|
elseif ($list === null) $array = $assoc;
|
||||||
|
elseif ($assoc === null) $array = $list;
|
||||||
|
elseif ($list_first) $array = array_merge($list, $assoc);
|
||||||
|
else $array = array_merge($assoc, $list);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user