Je m'essaie à l'utilisation des sessions, et je bute sur la manipulation
des variables de session... ou plutôt sur la manipulation des tableaux :
je cherche à combiner 2 tableaux (associatifs, je crois) en éliminant
les éventuels doublons.
Voilà le cas :
1 - je récupère les paramètres transmis par $_GET, (sauf le 1er) que je
place dans un tableau ainsi :
$select_tab = array_slice($_GET, 1);
2 - ensuite, je souhaite enregistrer ce tableau comme variable de
session de l'utilisateur; j'écris donc ceci :
$_SESSION['sess_select_tab'] = $select_tab;
Je crois que jusque là ça va (non ?).
Mais en fait, il se peut que l'opération ait déjà eu lieu précédemment
et donc que $_SESSION['sess_select_tab'] soit déjà définie.
Dans ce cas, je souhaite que les nouvelles données (contenues dans
$select_tab) soient ajoutées aux précédentes, SI elles n'y sont pas déjà
(donc éviter tout doublon).
Alors je tente ceci entre 1 et 2 :
if (isset($_SESSION['sess_select_tab']))
{
// compare le tableau de session au nouveau tableau
Mais là, j'ai un problème : la fonction "array_diff_assoc" n'existe pas
sur mon PHP 4.2.2...
D'où deux questions :
- si j'avais PHP > 4.3, est-ce que mon code est correct et
fonctionnerait ?
- comment obtenir la même chose avec PHP 4.x ?
Précision : il y a doublon dès qu'une valeur de la 2e colonne d'un des
tableaux (me fais-je ben comprendre ?) se trouve aussi dans la 2e
colonne de l'autre tableau;
Ou plus simple : $_SESSION['sess_select_tab'] = $_SESSION['sess_select_tab'] + $select_tab;
Oui, l'opérateur + existe pour les tableaux.
- si j'avais PHP > 4.3, est-ce que mon code est correct et fonctionnerait ?
Par rapport a l'exemple que tu donnes plus bas ca n'a pas grand chose a voir. Dans ton code tu vérifies si les clés des tableaux sont en doubles et dans ton exemple il faut vérifier les valeurs. Alors pouquoi utiliser array_diff_assoc au lieu de array_diff ?
Julien Gautier wrote:
[snip]
Alors je tente ceci entre 1 et 2 :
if (isset($_SESSION['sess_select_tab']))
{
// compare le tableau de session au nouveau tableau
Ou plus simple :
$_SESSION['sess_select_tab'] = $_SESSION['sess_select_tab'] + $select_tab;
Oui, l'opérateur + existe pour les tableaux.
- si j'avais PHP > 4.3, est-ce que mon code est correct et
fonctionnerait ?
Par rapport a l'exemple que tu donnes plus bas ca n'a pas grand chose a
voir. Dans ton code tu vérifies si les clés des tableaux sont en doubles et
dans ton exemple il faut vérifier les valeurs. Alors pouquoi utiliser
array_diff_assoc au lieu de array_diff ?
Ou plus simple : $_SESSION['sess_select_tab'] = $_SESSION['sess_select_tab'] + $select_tab;
Oui, l'opérateur + existe pour les tableaux.
- si j'avais PHP > 4.3, est-ce que mon code est correct et fonctionnerait ?
Par rapport a l'exemple que tu donnes plus bas ca n'a pas grand chose a voir. Dans ton code tu vérifies si les clés des tableaux sont en doubles et dans ton exemple il faut vérifier les valeurs. Alors pouquoi utiliser array_diff_assoc au lieu de array_diff ?