|
Publicité ' | |||||||||||||||||||||||
|
|
#1 | ||
|
Membre à l'essai
![]() Inscription : juin 2012 Messages : 151 ![]() |
Bonsoir;
J 'ai un fichier txt ou je recup les distances voici la structure du fichier txt ============================================== 174 , 5275 , 929 , 5275 , 156 , 169 , 5275 , 341 ============================================== ce sont des distances je voudrais afficher dans mon script que le plus petit ici 156 Voici le script de recup Code :
Voila la je ne sais pas faire : si je trouve un chiffre le plus proche de zero alors afficher ce chiffre j 'ai essayé avec des split et autre mais rien afaire Cordialement |
||
|
|
00
|
|
|
#2 | ||
![]() ![]() ![]() Didier MouronvalDéveloppeur Web Inscription : juin 2008 Messages : 18 561 ![]() |
Citation:
![]() Plus sérieusement, Citation:
Parce qu'à priori, un str_split puis un sort devraient suffire...
__________________
Pas de question technique par MP ! Tout le monde peut participer à developpez.com, vous avez une idée, contactez-moi ! Vous possédez un blog et aimeriez diffuser vos billets sur le forum, contactez-moi ! Mes formations video2brain : La formation complète sur JavaScript • JavaScript et le DOM par la pratique • PHP 5 et MySQL : les fondamentaux Mon livre sur jQuery
|
||
|
00
|
|
|
#3 |
|
Expert Confirmé
![]() Inscription : janvier 2010 Messages : 2 965 ![]() |
Salut
J'ai tendance à dire que c'est un cas d'école, le genre de truc qu'il est bon de trouver seul, sans aide, à part éplucher la doc de Php et les fonctions. En 1er je dirais si tu n'aurais pas la possibilité de (re)formater le contenu de dist.txt (donc dès sa création) en supprimant ce qui est inutile, comme les espaces, puis d'utiliser un séparateur plus conventionnel, comme le ; (point virgule). Pour obtenir une chaine comme : 174;5275;929;5275;156;169;5275;341 Mise à par ça, on obtient en 1er cette chaine dans $dist. Appliquer un simple str_replace() pour supprimer ces espaces inutiles. Ensuite explode(',', $dist) pour stocker tous les chiffres dans un tableau. Enfin un sort($chiffres, SORT_NUMERIC) pour trier le tableau du plus petit au plus grand. Le 1er élément sera alors le nombre le plus petit. Il y a peut être plus simple, ou plus optimisé, c'est quasi certain. Si tu veux faire du Php, prends au moins le temps maitriser les fonctions de bases, sinon tu ne cesseras de demander de l'aide pour des choses franchement simples.
__________________
Win XP | WampServer 2.2d | Apache 2.2.21 | Php 5.3.10 | MySQL 5.5.20 Si debugger, c'est supprimer des bugs, alors programmer ne peut être que les ajouter [Edsger Dijkstra] |
|
|
00
|
|
|
#4 | ||
|
Membre à l'essai
![]() Inscription : juin 2012 Messages : 151 ![]() |
Re , pour l 'instant j 'ai ceci
Code :
========================================================== Array ( [0] => 179; [1] => 535; [2] => 831; [3] => 851; [4] => 856; [5] => 849; [6] => 858; [7] => 834; [8] => 162; [9] => 605; [10] => 845; [11] => 562; [12] => 624; [13] => 641; [14] => 660; [15] => 710; [16] => 619; [17] => 669; [18] => 831; [19] => 615; [20] => 840; [21] => 701; [22] => 539; [23] => 551; [24] => 530; [25] => 834; [26] => 546; [27] => 708; [28] => 656; [29] => 520; [30] => 665; [31] => 706; [32] => 836; [33] => 846; [34] => 552; [35] => 660; [36] => 515; [37] => 525; [38] => 829; [39] => 835; [40] => 833; [41] => 833; [42] => 833; [43] => 830; [44] => 634; [45] => 535; [46] => 662; [47] => 659; [48] => 651; [49] => 644; [50] => 559; [51] => 576; [52] => 636; [53] => 637; [54] => 578; [55] => 682; [56] => 718; [57] => 658; [58] => 647; [59] => 696; [60] => 530; [61] => 520; [62] => 557; [63] => 521; [64] => 526; [65] => 697; [66] => 870; [67] => 618; [68] => 541; [69] => 845; [70] => 584; [71] => 630; [72] => 907; [73] => 881; [74] => 643; [75] => 644; [76] => 650; [77] => 727; [78] => 859; ) ========================================================= la suite a venir |
||
|
|
00
|
|
|
#5 | ||
|
Membre à l'essai
![]() Inscription : juin 2012 Messages : 151 ![]() |
C est bon j 'ai trouvé
Voici le code si cela peut servir à qq Code :
|
||
|
|
00
|
|
|
#6 |
|
Membre à l'essai
![]() Inscription : juin 2012 Messages : 151 ![]() |
RE,
Une question encore, Je ne trouve pas le moyen d'ecrire le reultat de print_r($arr1); dans un fichier txt est ce possible ?? cdt |
|
|
00
|
|
|
#7 | ||
|
Expert Confirmé
![]() Inscription : janvier 2010 Messages : 2 965 ![]() |
Citation:
De plus elle est très bien faite, faut pas s'en priver. Mais encore, il y a le NET (moteur de recherche). Tu veux écrire dans un fichier et bien recherche avec ces termes et tu auras de multitudes réponses et solutions. Je t'assure qu'en procédant ainsi c'est largement plus efficace que t'a méthode qui n'est autre que de supposer que telle ou telle fonction ferait ceci ou cela car elle effectue déjà ça. Méthode franchement hasardeuse, que de temps perdu. Donc lit la doc pour cette fonction print_r(). Question : est-ce qu'il est écrit quelque part quelle permettrait d'écrire dans un fichier ? Perso je lis ceci : Citation:
Que je sache, affiche n'est pas l'équivalent (ou synonyme) de écrire, non ? Ton problème c'est que tu inventes ou/et interprètes les choses. Un langage de programmation ça ne s'invente pas, ça s'apprend ![]() Sauf erreur
__________________
Win XP | WampServer 2.2d | Apache 2.2.21 | Php 5.3.10 | MySQL 5.5.20 Si debugger, c'est supprimer des bugs, alors programmer ne peut être que les ajouter [Edsger Dijkstra] |
||
|
|
00
|
|
|
#8 |
![]() ![]() |
Bonjour,
un cas similaire a été traité récemment ici : Stocker valeur compteur de clics Voir le script de compteur.php : à adapter. Et aussi => FAQ PHP : ouverture/lecture/écriture... d'un fichier
__________________
"Ce qui se conçoit bien s'énonce clairement - Et les mots pour le dire arrivent aisément." Nicolas Boileau-Despréaux, Homme de lettres français (1636-1711), principal théoricien de l'esthétique classique. "Quand le sage montre la lune, le sot regarde le doigt." Confucius, Homme d'Etat et philosophe chinois (551-479 av. J.-C). |
|
|
00
|
|
|
#9 | ||
|
Membre à l'essai
![]() Inscription : juin 2012 Messages : 151 ![]() |
bonjour et merci pour les liens jreaux62
J 'ai donc étudié la doc php , mais la autre problème Je vais exposer le problème en espérant froisser personne ..... Mon fichier txt : 130;176;175;967;93;141;136;135;142;194; fichier dist.txt Mon code Code :
Array ( [0] => 130; [1] => 176; [2] => 175; [3] => 967; [4] => 93;1 [5] => 41;1 [6] => 36;1 [7] => 35;1 [8] => 42;1 [9] => 94; ) Bon je comprend bien que tout viens de cette partie : $arr1 = str_split($str,4); et que cela viens du découpage de la chaîne mais je ne trouve pas d'explication a cela dans la doc ou même une autre fonction En m 'excusant d avance de la simplicité de ma question auprès des membres du forum |
||
|
|
00
|
|
|
#10 | ||
|
Expert Confirmé
![]() Inscription : janvier 2010 Messages : 2 965 ![]() |
L'explication vient du fonctionnement de la fonction str_split() qui n'est pas adapté dans ton cas.
D'ailleurs je t'avais suggéré la fonction explode() qui est plus simple à comprendre qui plus est, plus adapté (voit totalement). Je m'explique. La fonction str_split(), comme cela est décrit dans la doc, va découper la chaine selon un nombre de caractère défini en 2ème paramètre : ici tu as mis 4. Cette fonction ne tiens pas la route (mauvais choix de fonction) car les nombres que composent la chaine ont un nombre de caractères variables. Entre autre : 130 (3 caractères) et 93 (2 caractères). De plus, les ; (points virgules) sont encore présent (font partie de chaque nombre). Pourtant, ces ; sont là pour aider/faciliter la récupération de chaque nombre, ils ne sont pas là pour de la décoration. Ce sont des séparateur (ou délimiteurs), c'est ça "le truc" qu'il fallait (ou il faut) exploiter. La fonction explode a un fonctionnement radicalement différent (rien à voir même). Son fonctionnement tient compte d'un élément séparateur (ou délimiteur). La chaine, c'est à dire le contenu du fichier contient un séparateur : des points virgules ; (autant dire du pain béni). Ils y sont, faut juste les exploiter. C'est ça qui va permettre de récupérer chaque nombre, cela quelque soit le nombre de caractères (93 : 2 caractère, 575 : 3 caractères, etc ...). Faut pas chercher plus loin, plus compliqué. D'ailleurs, ce n'est pas pour rien qu'au début je t'avais suggéré de supprimer ces espaces superflus qui séparent chaque nombre, car des espaces sont des caractères à part entière. Non seulement ces espaces ne servent à rien, mais pire, ils fiches la zizanie. Donc je le répète à nouveau. Au lieu de se prendre la tête à appliquer la fonction str_replace() pour supprimer ces espaces qui embêtent plus qu'autre chose pour ne conserver que les ; et rien d'autre comme séparateur, le plus simple serait de revoir le code qui crée se fichier dist.txt à l'origine (quitte à le faire à la mano) en écrivant ces nombres sans espaces donc juste en les séparant avec des ; et uniquement. Si cela est fait il n'y aura plus besoin d'appliquer la fonction str_replace(). On somme on se simplifie la vie (et le code par la suite). Ce point est juste une parenthèse. Si on revient à cette fonction explode(), on lui passe 2 informations (ou 2 paramètres) : - en 1er le séparateur -> ici le ; - La chaine ->$dist Un exemple en occultant le fichier (en partant de $dist) Code :
1 7894 23 456789123 97 On peu difficilement faire plus simple La doc de Php de la fonction : explode
__________________
Win XP | WampServer 2.2d | Apache 2.2.21 | Php 5.3.10 | MySQL 5.5.20 Si debugger, c'est supprimer des bugs, alors programmer ne peut être que les ajouter [Edsger Dijkstra] |
||
|
|
00
|
Copyright © 2000-2013 - www.developpez.com