comparaison

yoman
Invité n'ayant pas de compte PHPfrance

22 janv. 2011, 22:37

bonjout j'ai un fichier txt et je recupere la derniere ligne le texte de cette ligne est "g"




<?php
$fcontents = file("fichier.txt");
$i_fichier = sizeof($fcontents)-2;
while ($fcontents[$i_fichier]!='' )
{

$i_fichier++;


$tsts = $fcontents[$i_fichier];
$tsts = rtrim($tsts);

echo $tsts;\\=g


}

if ($tsts == "g")
{
print("ok");
}

?>

mon probleme c'est que quand je demande si la variable $tsts est egal à g cela ne fonctionne pas , je ne sais pas d'ou viens mon erreur pourtant g = g

Avatar du membre
Modérateur PHPfrance
Modérateur PHPfrance | 8758 Messages

22 janv. 2011, 23:25

Que donne un var_dump($fcontents[ $i_fichier -1]) ?

Tu aura ainsi la derniere ligne ainsi que le nb de caracteres de celle (caracteres blancs compris).

Pourquoi utiliser un while alors que tu peut acceder directement a la derniere ligne ?

@+
Il en faut peu pour être heureux ......

yoman
Invité n'ayant pas de compte PHPfrance

22 janv. 2011, 23:44

ben a vrais dire c'est un code que j'ai copier d'un site

je suis apprentie dans le php

mais j'ai vraiment besoin de cette solution pour mon site et je ne connais pas trop le var_dump

je chercher sur le manuel , mais une question aurais t'il une différence pour le resultat "g" = "g" ?

Avatar du membre
Modérateur PHPfrance
Modérateur PHPfrance | 8758 Messages

22 janv. 2011, 23:55

Suivant l'encodage pourquoi pas.

Mais bon la le truc c'est d'etre sur qu'il n'y a pas d'espace ou de tabulation avant le g car la pour le coup ' g' != 'g' ;)

Essai le code que j'ai mis au dessus. Tu peut regarder la doc de var_dump sur le site php.net (http://www.php.net/var_dump)


@+
Il en faut peu pour être heureux ......

yoman
Invité n'ayant pas de compte PHPfrance

23 janv. 2011, 00:08

et bien j'ai essayé ton code j'ai bien une réponse g mais cela m'affiche string(3) "g "


<?php
$fcontents = file("fichier.txt");
$i_fichier = sizeof($fcontents);
var_dump($fcontents[ $i_fichier -1]);
$i_fichier++;
$tsts = $fcontents[$i_fichier];
echo $tsts;
if ($tsts == 'g ')
{
print("ok");
}

?>

yoman
Invité n'ayant pas de compte PHPfrance

23 janv. 2011, 00:17

je pense que cela va me prendre encore quelque jours pour trouver la solution lol

Avatar du membre
Modérateur PHPfrance
Modérateur PHPfrance | 8758 Messages

23 janv. 2011, 00:23

C'esr donc clair ta derniere ligne ne pas que la lettre g c'est pour cela que ton test echou. Le var_dump te donne le typz (string) mais la "taille" ici 3 il y a 3 caracteres donc deux caracteres "blanc" +g

Essai d'utiliser trim au lieu de rtrim


@+
Il en faut peu pour être heureux ......

yoman
Invité n'ayant pas de compte PHPfrance

23 janv. 2011, 00:34

cela me donne le même résultat string(3) "g "

<?php
$fcontents = file("fichier.txt");
$i_fichier = sizeof($fcontents);
var_dump($fcontents[ $i_fichier -1]);
$i_fichier++;
$tsts = $fcontents[$i_fichier];
$tsts = trim($tsts);
echo $tsts;
if ($tsts == 'g')
{
print("ok");
}

?>

yoman
Invité n'ayant pas de compte PHPfrance

23 janv. 2011, 00:46

dans mon fichier txt j'ai un retour a la ligne en dessous de g c peut etre pour ca??

yoman
Invité n'ayant pas de compte PHPfrance

23 janv. 2011, 00:51

j'ai enlever le retour a la ligne et la j'ai bien string(1) "g"

mais bon ma comparaison ne fonctionne toujours pas

yoman
Invité n'ayant pas de compte PHPfrance

23 janv. 2011, 01:25

ok désolé c'est bon maintenant merci du coup de main moogli