Tableau type array: comment inverser les colonnes

Répondre


Cette question est un moyen d’empêcher des soumissions automatisées de formulaires par des robots.
Smileys
:D :) :( :o :shock: :? 8-) :lol: :x :P :oops: :cry: :evil: :twisted: :roll: :wink: :!: :?: :idea: :arrow: :| :mrgreen: =D> #-o =P~ :^o :non: :priere: 8-|
Voir plus de smileys
  Revue du sujet
 

  Étendre la vue Revue du sujet : Tableau type array: comment inverser les colonnes

par d0m » 04 mars 2008, 12:49

Je ne parlais pas des lignes mais plutôt des colonnes.
Le mieux est encore de tester les 2 solutions en enregistrant le temps d'exécution.

par Sebe » 04 mars 2008, 12:44

Ça te demande de construire un tableau à n+1 éléments en faisant appel à n éléments.
Effectivement pour un plus grand tableau par exemple 10 éléments ça va devenir tout de suite plus lourd, rien qu'à l'œil.

Si tout ce que tu veux faire c'est ajouter un élément au début du tableau, je pense qu'il est préférable d'utiliser la fonction PHP faire justement pour ça.
Ok je regarde plus en profondeur ce soir car il faut que j'aille bosser après-midi !
Pour info, il y a des tableaux qui contiennent beaucoup plus de 10 lignes ... il y a des classements et certains sont à plus de 700 arrivées mais il s'affiche encore relativement vite ! Qu'est-ce que tu en penses ?

Merci

par d0m » 04 mars 2008, 12:19

Ça te demande de construire un tableau à n+1 éléments en faisant appel à n éléments.
Effectivement pour un plus grand tableau par exemple 10 éléments ça va devenir tout de suite plus lourd, rien qu'à l'œil.

Si tout ce que tu veux faire c'est ajouter un élément au début du tableau, je pense qu'il est préférable d'utiliser la fonction PHP faire justement pour ça.

par Sebe » 04 mars 2008, 11:51

Re,

J'ai déjà pas mal bouquiné et même pour ce que je cherche maintenant (j'ai passé ma soirée hier) ... je viens juste de trouver un truc qui m'a l'air de fonctionner mais j'aimerai avoir un avis (est-ce bon ou est-ce que cela va alourdir de trop mon code lors de tableau beaucoup plus lourd):
for ($i=0; $i<$key+1; $i++){
	$epreuvelist[$i] = array(id=>$epreulist[$i]->id, decompte=>$epreulist[$i]->decompte, epreuve=>$epreulist[$i]->epreuve);
	}
Ce qui est certain c'est que cela fonctionne mais est-ce dans les meilleures conditions ... je l'ai, en attendant une réponse, laissé car je suis fier de l'avoir trouvé moi même :roll:

Merci

par d0m » 04 mars 2008, 11:44

A condition de savoir ce que l'on cherche ... j'apprends sur le tas en fonction de mes besoins et il m'est très difficile de savoir tout ce qui existe !
C'est bien pour cela que la doc est là, parce qu'on ne connait pas toutes les fonctions. Moi même je ne la connaissais pas avant que tu poses la question.
Les fonctions sont rangées par catégories.
Il y a une catégorie sur la manipulation de tableau.
Toutes les fonctions sont listées. Après bien sûr il faut fouiller un peu.
Tu trouves par exemple array_push... tiens ca pourrait être ça, ah non c'est mettre à la fin du tableau. Mais dans la doc de array_push il y a Voir aussi. Ce sont les fonctions qui ont un lien ou ressemblent à celle ci.... et là il y a array_unshift.
Maintenant, je suis encore plus désolé mais je ne vois franchement pas comment je dois utiliser ton idée :?:
Dans ta boucle
foreach($epreulist as $key => $epreuve){
  ...
}
tu ajoutes ton élément au début du tableau $epreuve avec cette fonction.

Par contre attention, $epreuve est une copie, il faut donc l'ajouter à l'original c'est à dire $epreulist[$key]

par Sebe » 04 mars 2008, 11:17

Salut,
oui il faut s'y prendre de la même manière que lorsque tu cherches d'autres fonctions :
aller faire un tour dans le manuel PHP ...
et hop en 30s c'est trouvé
A condition de savoir ce que l'on cherche ... j'apprends sur le tas en fonction de mes besoins et il m'est très difficile de savoir tout ce qui existe !

Maintenant, je suis encore plus désolé mais je ne vois franchement pas comment je dois utiliser ton idée :?:
Je dois pas encore être bien réveillé mais....... quel est l'intérêt d'ordonner les éléments d'un tableau associatif ? :shock:

Le but, c'est de pouvoir appeller les valeur à partir de leur clé littérale, donc on se moque un peu de savoir si c'est la première, la dernière ou la quarante-treizième :-k

En faite, j'ai codé une fonction pour afficher une jolie quantité de tableaux (c'est pour gagner en place) et ma fonction affiche les colonnes comme elles sont saisies par ma requête ... si je peux inverser cette saisie dans les tables, il m'est pour l'instant impossible d'ajouter un compteur ou une autre colonne à l'endroit que je désire !

Merci

par d0m » 04 mars 2008, 09:51

Peut-être pour utiliser un foreach derrière pour un affichage.

par Ryle » 04 mars 2008, 09:46

Je dois pas encore être bien réveillé mais....... quel est l'intérêt d'ordonner les éléments d'un tableau associatif ? :shock:

Le but, c'est de pouvoir appeller les valeur à partir de leur clé littérale, donc on se moque un peu de savoir si c'est la première, la dernière ou la quarante-treizième :-k

Re: Tableau type array: comment inverser les colonnes

par d0m » 04 mars 2008, 09:35

Salut,
Quelqu'un peut-il me dire comment je dois m'y prendre ?
oui il faut s'y prendre de la même manière que lorsque tu cherches d'autres fonctions :
aller faire un tour dans le manuel PHP ...
et hop en 30s c'est trouvé

Tableau type array: comment inverser les colonnes

par Sebe » 04 mars 2008, 00:13

Bonjour,

J'ai créé un tableau de type array avec une requête sur une table:
$query = "SELECT id, epreuve"
	. "\n FROM #__classement_epreuve"
	. "\n ORDER BY epreuve ASC"
	;
$database->setQuery( $query );
$epreulist = $database->loadObjectList();
Le tableau donne ceci:
Array ( [0] => stdClass Object ( [id] => 1 [epreuve] => Jogging du Mont de la Trinité ) [1] => stdClass Object ( [id] => 3 [epreuve] => Jogging du Printemps ) [2] => stdClass Object ( [id] => 5 [epreuve] => La Gallo-Romaine ) [3] => stdClass Object ( [id] => 2 [epreuve] => La Kainoise ) )
Pour mes besoins, je dois modifier une colonne et en ajouter une autre. Si pour la modification cela ne me pose pas de problème, j'en rencontre un pour celle (compte le nombre d'epreuve) que j'ajoute !
foreach($epreulist as $key => $epreuve){
	$epreulist[$key]->decompte = $key + 1;
	$epreulist[$key]->epreuve = '<a href="' . $link . $epreuve->id . '">' . $epreuve->epreuve . '</a>';
	}
Le problème que je rencontre est que je voudrais placer le nouveau champ $epreulist[$key]->decompte en 1er place ce qui donnerait quelque chose comme cela:
Array ( [0] => stdClass Object ( [decompte]=> 1 [id] => 1 [epreuve] => Jogging du Mont de la Trinité ) [1] => stdClass Object ( [decompte]=> 2 [id] => 3 [epreuve] => Jogging du Printemps ) [2] => stdClass Object ( [decompte]=> 3 [id] => 5 [epreuve] => La Gallo-Romaine ) [3] => stdClass Object ( [decompte]=> 4 [id] => 2 [epreuve] => La Kainoise ) )
Quelqu'un peut-il me dire comment je dois m'y prendre ?

Merci