Problème de mise en page pour la sortie de mon tableau

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 : Problème de mise en page pour la sortie de mon tableau

Re: Problème de mise en page pour la sortie de mon tableau

par diabless6 » 31 janv. 2010, 17:22

c'est normal on a pas "l'aptitude spatiale".
c'est notre 6eme sens a nous :wink:
Oui à vous les garçons :wink:

Re: Problème de mise en page pour la sortie de mon tableau

par stealth35 » 31 janv. 2010, 17:20

c'est normal on a pas "l'aptitude spatiale".
c'est notre 6eme sens a nous :wink:

Re: Problème de mise en page pour la sortie de mon tableau

par diabless6 » 31 janv. 2010, 17:17

ouai pas mal ! Mais faut suivre le fil d'Ariane :roll: .... surtout moi jsuis vite perdue, mais c'est normal on a pas "l'aptitude spatiale".

Mais j'aurai pas penser à ça :| Grosso modo, retraiter le tableau avec d'autres boucles.

Bon je garde sous le coude aussi, ça me sera d'une grande utilité pour mes futures applications.

Merci stealth :wink:

Re: Problème de mise en page pour la sortie de mon tableau

par stealth35 » 31 janv. 2010, 00:37

<?php 
$data   =  file('data.txt');
$test  = array();
               
foreach($data as $item)
{
	$line = preg_split('/[-\+]/', preg_replace('/\s+/', '', $item));
	                               
	foreach ($line as $key => $value)
	{
		$test[$key][] = $value;
	}
}


foreach($test as $col => $item)
{
	$vals 	= array_count_values($item);	
	$str 	= array();
	
	foreach($vals as $key => $value)
	{
		$str[] = sprintf('total de %d = %d', $key, $value);
	}
	
	echo sprintf('Colonne %d : %s <br />', $col ,implode(', ', $str));
}

Re: Problème de mise en page pour la sortie de mon tableau

par diabless6 » 30 janv. 2010, 23:51

J'ai tout de même un soucis :
 foreach (array_count_values($line) as $key => $value)
                                {
                                   $test[$key][] = $value;
Mon array_count_values ne fonctionne pas, je vois pas ou le mettre ?!?
echo "$key = $value <br/>";
0 = 7
1 = 8
2 = 22
3 = 28
4 = 38
5 = 10
0 = 3
1 = 21
2 = 32
3 = 33
4 = 38
5 = 10
0 = 4
1 = 7
2 = 14
3 = 31
4 = 37
5 = 8
On voit bien là comment le foreach fonctionne.

Re: Problème de mise en page pour la sortie de mon tableau

par stealth35 » 30 janv. 2010, 23:02

Ben ça me fait des chiffres incompréhensible et très aléatoires : 0.0073979999999999 ou 0.01789 micro-secondes

Faut vraiment avoir quelques choses de lourd à traiter pour s'apercevoir d'une différence.

Merci à vous 2 :wink:
t'aura jamais les memes chiffres, ca depend de beaucoup de chose derriere, par contre ca sera toujour dans la meme fourette de resultat, le but etant de faire plsu bench et faire la moyenne, mais tu peur voir tout de suite dans ton resultat que le 2eme est environ 2x plus long,
comem disais AB sur peu de volume c'est pas trop grave, mais sur beaucoup (ca montait a presque 300x plus long), un script qui va mettre 10ms sec, mettra 3sec et la c'est pas negligable

Re: Problème de mise en page pour la sortie de mon tableau

par diabless6 » 30 janv. 2010, 22:51

Ben ça me fait des chiffres incompréhensible et très aléatoires : 0.0073979999999999 ou 0.01789 micro-secondes

Faut vraiment avoir quelques choses de lourd à traiter pour s'apercevoir d'une différence.
foreach ($line as $key => $value)
                                {
                                     $test[$key][] = $value;
                                } 
C'est ce que je cherchais à faire précédemment, je met sous le coude :wink:
Merci à vous 2 :wink:

Re: Problème de mise en page pour la sortie de mon tableau

par AB » 30 janv. 2010, 22:43

@diablesse6 Pour info suite à ton mp, "couteux en ressource" ça veut dire que ça coute beaucoup de temps de calcul :wink:

Re: Problème de mise en page pour la sortie de mon tableau

par stealth35 » 30 janv. 2010, 22:37

héhé, en plus le plus drole c'est que

array_combine(array_flip(array_keys($array)), $array) == array_values($data)

#-o #-o #-o #-o

sinon pour microtime ouai

tu fais : $time = microtime(); en debut de code

apres a chaque bench tu feras

echo microtime() - $time;


sinon ta des extension comme xdebug qui te font ca plus simplement et proprement

Re: Problème de mise en page pour la sortie de mon tableau

par diabless6 » 30 janv. 2010, 22:26

Je suis sauvée Dieu merci. J'ai quand même un bon 6ème sens non ?! :P

Moi j'ai un blocage dans les imbrications de fonctions :mrgreen:

j'ai une préfèrence pour les boucles car je suis une fille.... :twisted:

Niveau performance: un test avec le microtime c'est ça ? Comment on évalue ce genre de chose ? C'est intéressant de savoir ça car ça permet de choisir la méthode la moins lourdes et la plus rapide pour programmer.

Re: Problème de mise en page pour la sortie de mon tableau

par stealth35 » 30 janv. 2010, 18:14

:mrgreen:

ouai je sais pas j'ai un bloquage sur les boucles imbriqué. Et être trop a fond sur toute les fonction array ca n'a pas que du bon ducoup...

Re: Problème de mise en page pour la sortie de mon tableau

par AB » 30 janv. 2010, 18:02

ouai. Ta façon de faire est intéressante, néanmoins je la trouve avancée à mon niveau. Ceci dit, elle mérite réflexion.
Oui y'a du très bon (le début) et du très compliqué (la suite) dont on se demande la nécessité #-o #-o #-o

C'est vrai que dans les précédents topic je voulais t'apprendre quelques fonctions de tableaux, mais là, c'est du grandiose, niveau artistique ça touche au sublime :mrgreen:

Parce que je vois pas la différence de résultat entre les ces deux façons de faire :
$data   = file('data.txt');


$test  = array();
		
       foreach($data as $item)
        {
            $line = preg_split('/[-\+]/', preg_replace('/\s+/', '', $item));
				
			foreach ($line as $key => $value)
				{
				     $test[$key][] = $value;
				} 
        }

echo '<pre>';echo 'test = ';
print_r($test);
echo '</pre>';



$array  = array();


       foreach($data as $item)
        {
            $line = preg_split('/[-\+]/', preg_replace('/\s+/', '', $item));
			
            $fill = array_map('chr', array_keys($line));
            $line = array_combine($fill, $line);   
               
            $array = array_merge_recursive($array, $line); 
        }
		
	$array = array_combine(array_flip(array_keys($array)), $array);

     
echo '<pre>';echo 'array = ';
print_r($array);
echo '</pre>';
Par contre niveau performances, plus tes entrées $data seront grandes, plus la différence de traitement entre les deux façons de faire sera importante. Sur quelques entrées cela ne varie "que du simple au double" par contre pour m'amuser j'ai fait un test sur 3 000 entrées, la deuxième solution n'est que 234 fois plus lente que la première, une broutille :mrgreen:

Comme quoi la simplicité peut payer, ou alors y'a un truc qui m'échappe :-k

Re: Problème de mise en page pour la sortie de mon tableau

par diabless6 » 30 janv. 2010, 17:41

Ce que j'ai saisie, on part du tableau d'origine, on examine sa structure et on réalise un filtre avec le choix d'une fonction étape par étape.

Merci pour ton aide ;)

Re: Problème de mise en page pour la sortie de mon tableau

par stealth35 » 30 janv. 2010, 01:22

oui, pour le print_r comme ca tu vois comment bien visualisé ton array pour la parcourir apres

je te commente le code
$data   = file('data.txt'); // file creer un array avec pour chaque ligne une entrée (ex: $data[0] = la premiere ligne du fichier)
$array  = array();

foreach($data as $item) //on parcoure notre fichier ligne par ligne
{
        $line = preg_split('/[-\+]/', preg_replace('/\s+/', '', $item)); //on creer un tableau en coupant via les - ou + ,  et on surprime les fins de ligne
       
       //array_merge_recursive ne marche qu'avec des clefs de type (string) or la on a (0 => 12, 1 => 7 ....)
        $fill = array_map('chr', array_keys($line)); // donc on creer une liste de clefs avec autant de caratere ascii que d'entré dans le tableau (ex : 0 => a, 1 => b...)
        $line = array_combine($fill, $line);   //on combine les clef avec les valeurs (ex : a => 12, b => 7)
       
        $array = array_merge_recursive($array, $line); // on merge avec la recursivité, (ex :a chaque clef "a" il va creer une entré)
}
// le probleme est que notre tableau a des clefs de type (string), ducoup on recuprer les clefs (ex : 0 => a, 1 => b) on inverse ducoup (a => 0, b => 1)
//on a maintenant nos clef de type (int) on combine avec les valeurs
$array = array_combine(array_flip(array_keys($array)), $array);

//print_r($array);

Code : Tout sélectionner

Array ( [0] => 7-8-38+10 [1] => 3-21-38+10 ) Array ( [0] => 7 [1] => 8 [2] => 38 [3] => 10 ) Array ( [�] => 7 [] => 8 [] => 38 [] => 10 ) Array ( [0] => 3 [1] => 21 [2] => 38 [3] => 10 ) Array ( [�] => 3 [] => 21 [] => 38 [] => 10 ) Array ( [�] => Array ( [0] => 7 [1] => 3 ) [] => Array ( [0] => 8 [1] => 21 ) [] => Array ( [0] => 38 [1] => 38 ) [] => Array ( [0] => 10 [1] => 10 ) ) Array ( [0] => Array ( [0] => 7 [1] => 3 ) [1] => Array ( [0] => 8 [1] => 21 ) [2] => Array ( [0] => 38 [1] => 38 ) [3] => Array ( [0] => 10 [1] => 10 ) )

Re: Problème de mise en page pour la sortie de mon tableau

par diabless6 » 29 janv. 2010, 23:48

le print_r sert à afficher des informations à propos d'une variable pour un déguggage je crois.

oui ça marche comme ça, mais c'est pas légitime d'utiliser un print_r pour l'affichage.

Autrement j'ai bloqué sur : $array = array_combine(array_flip(array_keys($array))

C'est l'imbrication qui me bloque, c'est un concept pas très féminin ça. Et je peine à imbriquer ces fonctions.

J'aimerai comprendre le raisonnement suivi pour imbriquer des fonctions entres elles.