Attention: le message qui va suivre ne contient aucun intérêt.
Soit S ($selected_ids) un tableau de N entiers, tous différents (cf filtrage précédent).
Soit V ($allowed_ids) un tableau de P entiers, tous différents, supposés être les seuls autorisés.
Soit f (array_merge) l'application qui à deux tableaux (T,U) associe un nouveau tableau V composé des éléments de T et de U (avec doublons)
Soit g (array_unique) l'application qui à tout tableau T associe un nouveau tableau U composé des éléments de T sans doublons.
Soit c (count) l'application qui à tout tableau T associe le nombre d'éléments n, entier, de ce tableau.
Soit x un entier appartenant à S.
Soit s et t deux tableaux tels quel:
S = s + t
Tout élément de s est dans V
Tout élément de t n'est pas dans V
t est composé de Nt éléments et peut être vide (Nt=0)
s est composé de Ns éléments et peut être vide (Ns=0)
N = Nt + Ns
t et s peuvent être vides en même temps (alors, S est vide).
Alors, g( f(S,V) ) = g( f(s+t,V) ) = g( f(t,V) + f(s,0) )
f(s,0) = s
f(t,V) = t + V car t et V sont disjoints
Donc
g(f(S,V)) = g( s + t + V) = g(t + V) car s est un sous tableau de V
g(t + V) = t + V car t et V sont disjoints
Donc
c(g(f(S,V))) - c(V) = c(g(t + V)) - c(V) = c(t + V) - c(V) = c(t) + c(V) - c(V) car t et V disjoints
D'où
c(g(f(S,V))) - c(V) = c(t) = Nt
Donc, count($allowed_ids) == count($union) si et seulement si tous les éléments de $selectid_ids se trouvent aussi dans $allowed_ids.
(Ah, ça faisait longtemps \o/)
Soit S ($selected_ids) un tableau de N entiers, tous différents (cf filtrage précédent).
Soit V ($allowed_ids) un tableau de P entiers, tous différents, supposés être les seuls autorisés.
Soit f (array_merge) l'application qui à deux tableaux (T,U) associe un nouveau tableau V composé des éléments de T et de U (avec doublons)
Soit g (array_unique) l'application qui à tout tableau T associe un nouveau tableau U composé des éléments de T sans doublons.
Soit c (count) l'application qui à tout tableau T associe le nombre d'éléments n, entier, de ce tableau.
Soit x un entier appartenant à S.
Soit s et t deux tableaux tels quel:
S = s + t
Tout élément de s est dans V
Tout élément de t n'est pas dans V
t est composé de Nt éléments et peut être vide (Nt=0)
s est composé de Ns éléments et peut être vide (Ns=0)
N = Nt + Ns
t et s peuvent être vides en même temps (alors, S est vide).
Alors, g( f(S,V) ) = g( f(s+t,V) ) = g( f(t,V) + f(s,0) )
f(s,0) = s
f(t,V) = t + V car t et V sont disjoints
Donc
g(f(S,V)) = g( s + t + V) = g(t + V) car s est un sous tableau de V
g(t + V) = t + V car t et V sont disjoints
Donc
c(g(f(S,V))) - c(V) = c(g(t + V)) - c(V) = c(t + V) - c(V) = c(t) + c(V) - c(V) car t et V disjoints
D'où
c(g(f(S,V))) - c(V) = c(t) = Nt
Donc, count($allowed_ids) == count($union) si et seulement si tous les éléments de $selectid_ids se trouvent aussi dans $allowed_ids.
(Ah, ça faisait longtemps \o/)