Réorganisation "d'array"

Résolu
cs_wizad Messages postés 355 Date d'inscription samedi 30 octobre 2004 Statut Membre Dernière intervention 14 avril 2009 - 4 mai 2006 à 00:13
cs_wizad Messages postés 355 Date d'inscription samedi 30 octobre 2004 Statut Membre Dernière intervention 14 avril 2009 - 4 mai 2006 à 10:13
Bonjour ou plutôt bonsoir.
Je vous expose mon problème à propos des tableaux php :
je génère un tableau de façon manuel. L'insertion de chaque ligne est conditioné par une variable (en l'occurance les droits de l'administrateur).

Exemple codé :
// Exemple : on liste les actions disponible suivant les droits de l'administrateur
$listRights = NULL;
if(check_right('news', $Admin)) // check_right retourne TRUE si l'admin ($Admin) dispose du droit 'news'
        $listRights[0] = 'Gérer les news';

if(check_right('articles', $Admin))

        $listRights[1] = 'Gérer les articles';

if(check_right('gallerie', $Admin))

        $listRights[2] = 'Gérer la gallerie';
// etc...


Ceci n'est qu'un exemple simple (mon code à problème fait 300 ligne) mais montre bien le problème. En effet, si l'administrateur ne dispose que des droits de news et de gallerie (toujours par rapport à l'exemple), le tableaux va compter 2 ligne affecter. La boucle de récupération cherchera donc les lignes 0 et 1 alors que seuls les lignes 0 et 2 sont affecté d'ou mon problème.

Je voulais donc savoir si il existait une technique pour pallier ce problème voir une fonction capable de retrier le tableau correctement (supprimer les lignes vides et reaffecter les index en fonction).
Voila donc si vous avez une réponse ou une idée n'hésitez pas.

2 réponses

platon179 Messages postés 237 Date d'inscription lundi 20 mai 2002 Statut Membre Dernière intervention 22 juillet 2011 2
4 mai 2006 à 08:36
Salut,

Oui, il existe une technique, tu n'es pas obligé de mettre un indice entre les crochets... S'il est absent, la prochaine case sera utilisée, tout simplement, comme ceci :

$listRights = array();
if(check_right('news', $Admin)) $listRights[] = 'Gérer les news';
if(check_right('articles', $Admin)) $listRights[] = 'Gérer les articles';
if(check_right('gallerie', $Admin)) $listRights[] = 'Gérer la gallerie';

Si l'admin n'a pas accès a 'articles' par exemple, tu auras :
$listRights[0] = 'Gérer les news'
$listRights[1] = 'Gérer la gallerie'

Bonne journée ++
cs_wizad Messages postés 355 Date d'inscription samedi 30 octobre 2004 Statut Membre Dernière intervention 14 avril 2009
4 mai 2006 à 10:13
Merci Platon.
Je ne connaissait pas cette technique même si je la savais possible lors de la création via la méthode "new array(..."
Bonne journée
Rejoignez-nous