Bonjour,

J'ai un problème d'unset sur un tableau lorsque les éléments du tableau sont eux même des tableaux.

Je m'explique, je fais un moteur de recherche pour la boite où je suis en stage.
Au retour de mes requêtes, je construis des tableaux qui ressemblent à ça :

Array (
[0] => Array (
[id] => xxx
[intitule] => Intitulé1
[nbMotCle] => x
)
[1] => Array (
[id] => xxx
[intitule] => Intitulé2
[nbMotCle] => x
)
.
.
.
)

J'ai des doublons (car plusieurs requêtes sont contenues dans le même tableau). Pour les supprimer j'ai bien essayé Mais il ne me laisse plus qu'une seule entrée vu que c'est toutes des tableaux...

Je me suis donc fais une petite fonction

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
 
for ($i = 0; $i < count($monTab); $i++)
{
	for ($j = 0; $j < count($monTab); $j++)
	{
		if($resultMetier[$i]['id'] == $resultMetier[$j]['id'] && $j != $i)
		{ 
			//unset($monTab[$i]['id']);
			//unset($monTab[$i]['intitule']);
			//unset($monTab[$i]['nbMotCle']);
			unset($monTab[$i]);
		}
	}
}
Elle marche plutôt pas mal vu qu'elle agit sur les bonnes entrées. Le problème c'est qu'elle ne les supprime vraiment pas du tableau elle les vide
Il devient comme ça (avec [0] une valeur que je veux garder, et [1] une valeur qui a été "unset") :

Array (
[0] => Array (
[id] => xxx
[intitule] => Intitulé1
[nbMotCle] => x
)
[1] => Array (
[intitule] =>
[nbMotCle] => 0
)
.
.
.
)
Il n'y a que la colonne 'id' qui est correctement supprimée.

Dans le code mit plus haut, j'ai mis des "unset" en commentaires, car comme ça ne marchait pas en faisant le "unset" sur l'entrée elle même, j'ai essayé sur les variables qui sont dedans, puis sur l'entrée, mais j'obtiens le même résultat. Également si j'"unset" la variable $i ou $j.

Donc je ne sais pas si ça vient de ma fonction ou du unset qui serait mal utilisé ou mal approprié dans ce cas là.

Merci