[RESOLU] Organisation clé array

Eléphanteau du PHP | 18 Messages

17 juil. 2016, 21:28

Bonjour à tous :)

Je cherche une fonction pour ré-organiser les clés d'un array en PHP et je ne trouve pas :(

Exemple :
$array('test1','test2','test3');

$array[1] = "";
var_dump($array); // Renvoi : 0=> 'test1' ; 1=> '' ; 2=> 'test3'

$array = array_filter($array);
var_dump($array); // Renvoi : 0=> 'test1' ; 2=> 'test3'
Ce que je souhaite c'est avoir :
var_dump($array); // Renvoi : 0=> 'test1' ; 1=> 'test3'
Merci par avance

Mammouth du PHP | 1967 Messages

18 juil. 2016, 10:02

Il y a plus simple pour supprimer un élément, unset($array[1]); mais ca te donnera le même type de tableau à l'arrivée.

si un classement alphabétique, te convient, il y a la fonction sort()
sinon il faudra coder la fonction toi même, tu boucle sur le premier tableau en remplissant un autre et tu retourne le second.
Spols
pour les fan de rubik's cube ou pour les curieux ==> le portail francophone du rubik's cube

Eléphanteau du PHP | 18 Messages

18 juil. 2016, 17:12

Bon j'avais pourtant souvenir qu'il exister une fonction pour faire ce travail plus proprement, je vais donner une solution via une boucle
$array('test1','test2','test3');
$array[1] = "";
for($i=0; $i <= (count($array) - 1); $i++) {
	if(!empty($array[$i])){
		$array_bis[] = $array[$i];
	}
}
$array = $array_bis;

Avatar du membre
Modérateur PHPfrance
Modérateur PHPfrance | 10684 Messages

18 juil. 2016, 17:19

Bonjour,

Comme suggéré par Spols, le mieux est d'utiliser unset() pour supprimer une entrée du tableau plutôt que de lui donner la valeur <chaîne vide>.
Et une fois que cela est fait, tu peux utiliser array_values() pour récupérer les valeurs de ton tableau simplement :
$array = Array('test1','test2','test3');
unset($array[1]); // supprime l'élément à l'index 1
$array = array_values($array); // remplace le contenu de la variable par un tableau ne contenant que les valeurs restantes
Ce n'est pas en améliorant la bougie que l'on a inventé l'ampoule...