[Php] Construction de tableaux
Résolu/Fermé
Xandler
Messages postés
38
Date d'inscription
mardi 10 avril 2007
Statut
Membre
Dernière intervention
10 mai 2007
-
26 avril 2007 à 13:51
Utilisateur anonyme - 27 avril 2007 à 17:06
Utilisateur anonyme - 27 avril 2007 à 17:06
A voir également:
- [Php] Construction de tableaux
- Easy php - Télécharger - Divers Web & Internet
- Tableaux croisés dynamiques - Guide
- Fusionner deux tableaux excel - Guide
- Simulateur de construction 14 - Télécharger - Simulation
- Euro construction equipment limited avis - Forum Consommation & Internet
3 réponses
Utilisateur anonyme
26 avril 2007 à 15:50
26 avril 2007 à 15:50
Pour info trim supprime juste les espaces qui se trouvent au début et à la fin d'une chaîne.
Voici une autre solution qui prend en compte les chaîines :
Voici une autre solution qui prend en compte les chaîines :
<?php //Un exemple $res= "\$statistiqueShapiro\n" . "[1] 0.571231 0.6485 \n" . "\n". "\$alpha\n" . "[1] 0.05\n" . "\$conclusion\n" . "[1] \"Le graphique représente donc le nuage de points correspondant aux valeurs observées associé à la droite caractéristique de la loi normale. On pourra conclure que si le nuage semble suivre la droite, alors l'échantillon suivra une loi normale ! Aussi, le test de Shapiro-Wilk permet de comparer les valeurs observées à la loi normale. Cette valeur indique que plus celle-ci est proche de 1 alors plus la distribution sera normale. Ainsi, si cette valeur de test est supérieure au seuil alpha, on suivra alors une loi normale !\"\n" . "\n" . "\$verdict \n" . "[1] \"On en déduit que l'on suit donc bien une loi normale\""; $array_res=explode("\n",$res); //print_r($array_res); $tab=array(); for($i=0;$i<count($array_res);$i++) { if (strncmp($array_res[$i],"$",1)==0 ){ $nomVar = trim(substr( $array_res[$i] , 1 , strlen($array_res[$i]))); $tab[$nomVar]=array(); }elseif (strncmp($array_res[$i],"[",1)==0) { $val = trim(substr( $array_res[$i] , 3 , strlen($array_res[$i]))); //Attention aux chaines de car. "ma chaine" il peuvent contenir des espaces if(ereg('^".*"$',$val)) // c'est une chaine (attention une seule) ca ne prend pas en compte "Ma chaine1" "Ma chaine2" $tab[$nomVar][]=trim($val); else $tab[$nomVar]=explode(" ",trim($val)); } } echo '<pre>'; print_r($tab); echo '</pre>'; ?>
Xandler
Messages postés
38
Date d'inscription
mardi 10 avril 2007
Statut
Membre
Dernière intervention
10 mai 2007
26 avril 2007 à 16:06
26 avril 2007 à 16:06
C parfait je te remercie !
Par contre je n'ai pas compris à quoi servait le [] du $tab[$nomVar][] dans le if du ereg !!
Peux tu m'éclairer une dernière fois ?
Merci pour tout !
Par contre je n'ai pas compris à quoi servait le [] du $tab[$nomVar][] dans le if du ereg !!
Peux tu m'éclairer une dernière fois ?
Merci pour tout !
Utilisateur anonyme
>
Xandler
Messages postés
38
Date d'inscription
mardi 10 avril 2007
Statut
Membre
Dernière intervention
10 mai 2007
26 avril 2007 à 16:18
26 avril 2007 à 16:18
Parceque dans le traitement, on a supposé que tous les éléments de $tab sont aussi des tableaux '$tab[$nomVar]=array(); ', ceci dit :
$tab[$nomVar][]=trim($val);
va inserer trim($val) dans le tableau (multidimensionnel) $tab[$nomVar] à la derniere positions +1.
Cela peut t'être très utilles après, dans ton traitement.
$tab[$nomVar][]=trim($val);
va inserer trim($val) dans le tableau (multidimensionnel) $tab[$nomVar] à la derniere positions +1.
Cela peut t'être très utilles après, dans ton traitement.
Xandler
Messages postés
38
Date d'inscription
mardi 10 avril 2007
Statut
Membre
Dernière intervention
10 mai 2007
>
Utilisateur anonyme
26 avril 2007 à 16:21
26 avril 2007 à 16:21
Ok je vois !
En tout cas, merci beaucoup tu m'as été d'un grand secours !
Passe une bonne journée !
En tout cas, merci beaucoup tu m'as été d'un grand secours !
Passe une bonne journée !
Xandler
Messages postés
38
Date d'inscription
mardi 10 avril 2007
Statut
Membre
Dernière intervention
10 mai 2007
>
Utilisateur anonyme
26 avril 2007 à 16:37
26 avril 2007 à 16:37
Juste une dernière chose avant que tu me laisse tomber pour de bon ;)
(Je profite que tu sois là)
la sortie buffer de R avec plusieurs valeurs donne :
----------------------------------
$statistiqueShapiro
[1] 1.4834945 -0.2917662 -1.2723906 -0.3298322 -1.9793199 0.5722631
[7] 2.1656412 0.1625851 0.8576816 -0.3166099
$alpha
[1] 0.05
$conclusion
[1] "Le graphique représente donc le nuage de points correspondant aux valeurs observées associé à la droite caractéristique de la loi normale. On pourra conclure que si le nuage semble suivre la droite, alors l'échantillon suivra une loi normale ! Aussi, le test de Shapiro-Wilk permet de comparer les valeurs observées à la loi normale. Cette valeur indique que plus celle-ci est proche de 1 alors plus la distribution sera normale. Ainsi, si cette valeur de test est supérieure au seuil alpha, on suivra alors une loi normale !"
$verdict
[1] "On en déduit que l'on suit donc bien une loi normale"
---------------------------------------
Des crochets se mettent en début de chaque ligne concernant le statistiqueShapiro, et je ne pense pas que l'expression régulière utilisée règle le problème !
Vu que je ne suis pas franchement doué pour ces expressions, pense tu pouvoir m'aider ( the last one c juré ! )
A moins que j'essaie de travailler juste entre les $ ??
Re-Re-MERCI !
(Je profite que tu sois là)
la sortie buffer de R avec plusieurs valeurs donne :
----------------------------------
$statistiqueShapiro
[1] 1.4834945 -0.2917662 -1.2723906 -0.3298322 -1.9793199 0.5722631
[7] 2.1656412 0.1625851 0.8576816 -0.3166099
$alpha
[1] 0.05
$conclusion
[1] "Le graphique représente donc le nuage de points correspondant aux valeurs observées associé à la droite caractéristique de la loi normale. On pourra conclure que si le nuage semble suivre la droite, alors l'échantillon suivra une loi normale ! Aussi, le test de Shapiro-Wilk permet de comparer les valeurs observées à la loi normale. Cette valeur indique que plus celle-ci est proche de 1 alors plus la distribution sera normale. Ainsi, si cette valeur de test est supérieure au seuil alpha, on suivra alors une loi normale !"
$verdict
[1] "On en déduit que l'on suit donc bien une loi normale"
---------------------------------------
Des crochets se mettent en début de chaque ligne concernant le statistiqueShapiro, et je ne pense pas que l'expression régulière utilisée règle le problème !
Vu que je ne suis pas franchement doué pour ces expressions, pense tu pouvoir m'aider ( the last one c juré ! )
A moins que j'essaie de travailler juste entre les $ ??
Re-Re-MERCI !
Utilisateur anonyme
>
Xandler
Messages postés
38
Date d'inscription
mardi 10 avril 2007
Statut
Membre
Dernière intervention
10 mai 2007
27 avril 2007 à 01:49
27 avril 2007 à 01:49
Non l'expression régulière n'a rien à voir avec ce problème,
en fait le problème venait de la ligne $tab[$nomVar]=explode(" ",trim($val));
Quand cette ligne et appelé une deuxième fois avec la même valeur de $nomVar, dans ton cas statistiqueShapiro, les premières valeurs sont écrasées.
Bon voici une solution,
je reste à ta disposition si tu as d'autres remarques :
Bonne nuit,
MedELID
en fait le problème venait de la ligne $tab[$nomVar]=explode(" ",trim($val));
Quand cette ligne et appelé une deuxième fois avec la même valeur de $nomVar, dans ton cas statistiqueShapiro, les premières valeurs sont écrasées.
Bon voici une solution,
je reste à ta disposition si tu as d'autres remarques :
<?php //Un exemple $res= "\$statistiqueShapiro\n" . "[1] 0.571231 0.6485 \n" . "[7] 2.1656412 0.1625851 0.8576816 -0.3166099 \n" . "\n". "\$alpha\n" . "[1] 0.05\n" . "\$conclusion\n" . "[1] \"Le graphique représente donc le nuage de points correspondant aux valeurs observées associé à la droite caractéristique de la loi normale. On pourra conclure que si le nuage semble suivre la droite, alors l'échantillon suivra une loi normale ! Aussi, le test de Shapiro-Wilk permet de comparer les valeurs observées à la loi normale. Cette valeur indique que plus celle-ci est proche de 1 alors plus la distribution sera normale. Ainsi, si cette valeur de test est supérieure au seuil alpha, on suivra alors une loi normale !\"\n" . "\n" . "\$verdict \n" . "[1] \"On en déduit que l'on suit donc bien une loi normale\""; $array_res=explode("\n",$res); //print_r($array_res); $tab=array(); for($i=0;$i<count($array_res);$i++) { if (strncmp($array_res[$i],"$",1)==0 ){ $nomVar = trim(substr( $array_res[$i] , 1 , strlen($array_res[$i]))); $tab[$nomVar]=array(); }elseif (strncmp($array_res[$i],"[",1)==0) { $val = trim(substr( $array_res[$i] , 3 , strlen($array_res[$i]))); //Attention aux chaines de car. "ma chaine" il peuvent contenir des espaces if(ereg('^".*"$',$val)) // c'est une chaine (attention une seul) ca ne prend pas en compte "Ma chaine1" "Ma chaine2" $tab[$nomVar][]=trim($val); else{ $tabTemp=explode(" ",trim($val)); foreach($tabTemp as $valT) $tab[$nomVar][]=$valT; } } } echo '<pre>'; print_r($tab); echo '</pre>'; ?>
Bonne nuit,
MedELID
Utilisateur anonyme
27 avril 2007 à 12:19
27 avril 2007 à 12:19
Non, ce n’est pas le résultat que j'obtiens :
Comme tu peux le remarquer, il y a juste une petite erreur dans [6] => ]
Bon voici une autre solution :
______________________________________________
Le résultat est :
Array ( [statistiqueShapiro] => Array ( [0] => 0.571231 [1] => 0.6485 [2] => 2.1656412 [3] => 0.1625851 [4] => 0.8576816 [5] => -0.3166099 [6] => ] [7] => 2.16433739 [8] => -0.73519664 [9] => -0.31011329 ) [alpha] => Array ( [0] => 0.05 ) [conclusion] => Array ( [0] => "Le graphique ...ale !" ) [verdict] => Array ( [0] => "On en déduit ..normale" ) )
Comme tu peux le remarquer, il y a juste une petite erreur dans [6] => ]
Bon voici une autre solution :
<?php //Un exemple $res= "\$statistiqueShapiro\n" . "[1] 0.571231 0.6485 \n" . "[7] 2.1656412 0.1625851 0.8576816 -0.3166099 \n" . "[13] 2.16433739 -0.73519664 -0.31011329\n" . "\n". "\$alpha\n" . "[1] 0.05\n" . "\$conclusion\n" . "[1] \"Le graphique repré...u seuil alpha, on suivra alors une loi normale !\"\n" . "\n" . "\$verdict \n" . "[1] \"On en déduit que l... bien une loi normale\""; $array_res=explode("\n",$res); //print_r($array_res); $tab=array(); for($i=0;$i<count($array_res);$i++) { if (strncmp($array_res[$i],"$",1)==0 ){ $nomVar = trim(substr( $array_res[$i] , 1 , strlen($array_res[$i]))); $tab[$nomVar]=array(); }elseif (strncmp($array_res[$i],"[",1)==0) { $val = trim(substr( $array_res[$i] , strpos($array_res[$i],']')+1 , strlen($array_res[$i]))); //Attention aux chaines de car. "ma chaine" il peuvent contenir des espaces if(ereg('^".*"$',$val)) // c'est une chaine (attention une seul) ca ne prend pas en compte "Ma chaine1" "Ma chaine2" $tab[$nomVar][]=trim($val); else{ $tabTemp=explode(" ",trim($val)); foreach($tabTemp as $valT) $tab[$nomVar][]=$valT; } } } echo '<pre>'; print_r($tab); echo '</pre>'; ?>
______________________________________________
Le résultat est :
Array ( [statistiqueShapiro] => Array ( [0] => 0.571231 [1] => 0.6485 [2] => 2.1656412 [3] => 0.1625851 [4] => 0.8576816 [5] => -0.3166099 [6] => 2.16433739 [7] => -0.73519664 [8] => -0.31011329 ) [alpha] => Array ( [0] => 0.05 ) [conclusion] => Array ( [0] => "Le graphique repré...u seuil alpha, on suivra alors une loi normale !" ) [verdict] => Array ( [0] => "On en déduit que l... bien une loi normale" ) )
Xandler
Messages postés
38
Date d'inscription
mardi 10 avril 2007
Statut
Membre
Dernière intervention
10 mai 2007
27 avril 2007 à 12:51
27 avril 2007 à 12:51
Salut,
ça m'enerve je ne comprends pas : g le même code que toi et ça ne marche pas, il me renvoie seulement la dernière ligne !
Je pense que le problème est que, dans la véritable sortie de R, il n'y a pas de retour à la ligne après les deux premières lignes de résultats de statistiqueShapiro !
C'est possible ?
Y a t-il une solution ?
Je suis chiant, non ?
ça m'enerve je ne comprends pas : g le même code que toi et ça ne marche pas, il me renvoie seulement la dernière ligne !
Je pense que le problème est que, dans la véritable sortie de R, il n'y a pas de retour à la ligne après les deux premières lignes de résultats de statistiqueShapiro !
C'est possible ?
Y a t-il une solution ?
Je suis chiant, non ?
Oui c'est possible, parce qu’un retour à la ligne est représenté par :
\n ou par \r\n (Forme générale sous Windows).
Donc je te conseille de lire ton fichier ligne par ligne (fget()) et de retourner directement un tableau.
Sinon il me faut ton fichier texte pour pouvoir te dire plus.
Dernière chose, est-ce que l'information entre [] n'est pas importante pour ton traitement par la suite ???.
MedELID
\n ou par \r\n (Forme générale sous Windows).
Donc je te conseille de lire ton fichier ligne par ligne (fget()) et de retourner directement un tableau.
Sinon il me faut ton fichier texte pour pouvoir te dire plus.
Dernière chose, est-ce que l'information entre [] n'est pas importante pour ton traitement par la suite ???.
MedELID
Xandler
Messages postés
38
Date d'inscription
mardi 10 avril 2007
Statut
Membre
Dernière intervention
10 mai 2007
>
Utilisateur anonyme
27 avril 2007 à 15:57
27 avril 2007 à 15:57
Je vais me renseigner sur fget() !
Sinon, t'inquiète la valeur de [] n'est pas importante !
Je te remercie pour tout !
Bonne continuation @+
Sinon, t'inquiète la valeur de [] n'est pas importante !
Je te remercie pour tout !
Bonne continuation @+
Xandler
Messages postés
38
Date d'inscription
mardi 10 avril 2007
Statut
Membre
Dernière intervention
10 mai 2007
>
Xandler
Messages postés
38
Date d'inscription
mardi 10 avril 2007
Statut
Membre
Dernière intervention
10 mai 2007
27 avril 2007 à 17:01
27 avril 2007 à 17:01
C résolu en fait c'était un soucis d'espaces juste avant les crochets !
Quand je comparais le premier caractère avec l'espace, il ignorait donc la ligne !!
Enfin, .............
Quand je comparais le premier caractère avec l'espace, il ignorait donc la ligne !!
Enfin, .............
Utilisateur anonyme
>
Xandler
Messages postés
38
Date d'inscription
mardi 10 avril 2007
Statut
Membre
Dernière intervention
10 mai 2007
27 avril 2007 à 17:06
27 avril 2007 à 17:06
Youpiiiiii :D
26 avril 2007 à 14:37
En voici un exemple :
------------------
$statistiqueShapiro
[1] 0.571231 0.6485
$alpha
[1] 0.05
$conclusion
[1] "Le graphique représente donc le nuage de points correspondant aux valeurs observées associé à la droite caractéristique de la loi normale. On pourra conclure que si le nuage semble suivre la droite, alors l'échantillon suivra une loi normale ! Aussi, le test de Shapiro-Wilk permet de comparer les valeurs observées à la loi normale. Cette valeur indique que plus celle-ci est proche de 1 alors plus la distribution sera normale. Ainsi, si cette valeur de test est supérieure au seuil alpha, on suivra alors une loi normale !"
$verdict
[1] "On en déduit que l'on suit donc bien une loi normale"
---------------------
En fait je voudrais réunir les valeurs $val=0.571231 et $val=0.6485 dans la variable $var=statistiqueShapiro. Et tout ça dans un tableau !
Est ce possible ? Merci
26 avril 2007 à 15:03
26 avril 2007 à 15:17
Tu crois qu'il y a un moyen d'y remédier ?
Encore merci