Incompréhension sur la déclaration d'une variable

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 : Incompréhension sur la déclaration d'une variable

par Truc » 10 févr. 2007, 15:33

Non, ça renvoit une erreur si on declare comme tu le dis.
Et qui est ?
C'est une logique... numérique :arrow: PAS de guillemets, l'erreur ne vient pas de la.

Par contre la fonction elle contient un tas d'erreurs :
1. "$partie.=" utilisation du point avant le égal pour concaténer ( .=) alors que la variable $partie n'a pas été initialisée.
2. $retour, inconnue au bataillon :-k
3. des constantes par convention sont en majuscule ok => OK
4. Pas de guillemets atour d'un variable : fopen($fichier, "r+")

La même chose en plus simple (regarde la doc pour les fonctions...)
Si tu ne disposes pas de PHP5 remplace "file_put_contents" par les 3 lignes d'écriture dans un fichier (présentes dans ton précédent code)
function Efface_Ligne_n($fichier, $nb, $option)
{
	if (file_exists($fichier))
    	{
		if($fich = file($fichier))
		{
			unset($fich[--$nb]);
			file_put_contents($fichier,$fich);
                        return OK;
		}
		else
		{
			return PB_OUV;
		}
    	}
	else
	{
	   return NO_FILE;
	}
}
$nb dans la fonction n'a aucune valeur. J'ai toujours rien compris à cette histoire moi. Que veux donc dire :
--$nb;?
$nb vaut 5 si tu fait ceci:
Efface_Ligne_n("data.txt", 5, 0);
et "--$nb" signifie que la variable est décrémentée avant même d'être utilisée pour la 1ère fois, donc que $nb vaut 4 avec le même appel que précédemment.
Désolé pour l'erreur sur le titre, c'est Incompréhension bien sur.
Rectifié :wink:

par LeBoy » 10 févr. 2007, 14:52

Non, ça renvoit une erreur si on declare comme tu le dis.

Code : Tout sélectionner

Efface_Ligne_n("data.txt", 5, 0);
$nb dans la fonction n'a aucune valeur. J'ai toujours rien compris à cette histoire moi. Que veux donc dire :

--$nb; ?

Désolé pour l'erreur sur le titre, c'est Incompréhension bien sur.

par Truc » 10 févr. 2007, 14:40

Je n'ai pas regardé le code mais l'appel à la fonction n'et pas correct :
Efface_Ligne_n("data.txt", "5", "0"); 
devrait être :
Efface_Ligne_n("data.txt", 5, 0); 
Ce qui est numérique n'a pas besoin d'être encadré par des guillemets.

$nb est déclarée dans les paramètres de la fonction :
function Efface_Ligne_n($fichier, $nb, $option)

par LeBoy » 10 févr. 2007, 14:24

Donc, il décrémenterait $nb. Mais $nb n'est pas déclaré dans ce script, et si je la déclare, ça ne change rien au script. Qui visiblement fonctionne puisqu'il ne renvoit aucune erreur. Mais il n'efface aucune ligne de mon fichier. Normal, puisque $nb n'est pas déclarée. Je vous met le code ça sera plus simple.

Code : Tout sélectionner

<?/*Exemples d'application: Efface_Ligne_n("data.txt", "5", "0"); -> Effacera la ligne 5 du fichier data.txt et laisse la ligne vide. Efface_Ligne_n("data.txt", "5", "0"); -> Effacera la ligne 5 du fichier data.txt et remonte le reste du fichier d'un cran. */ function Efface_Ligne_n($fichier, $nb, $option) { if (file_exists("$fichier")) { if($id = fopen("$fichier", "r+")) { --$nb; while(!feof($id)) { $ligne[]= fgets($id,1000000); } rewind($id); for($i=0; $i<$nb; ++$i) { $partie.=$ligne[$i]; } if($option==0) { $partie.=$retour; } for($i=$nb+1; $i>$nb, $i<500; ++$i) { $partie.=$ligne[$i]; } fclose($id); $id = fopen("$fichier", "w+"); fputs($id, $partie); fclose($id); return ok; } else { return pb_ouv; } } else { return no_file; } } ?>

par Truc » 10 févr. 2007, 14:11

Salut,

On ne peut pas en dire long sur le déroulement du script si erreur ou pas mais regarde ceci pour avoir un début d'explication.
(le lien montre pour ++$i mais l'explication est la même pour --$i [soustraction])

Incompréhension sur la déclaration d'une variable

par LeBoy » 10 févr. 2007, 14:06

Salut,

J'essai de comprendre un script afin de l'adapter à mes besoins. Mais il y a une ligne que je ne comprend pas. Je la cite :

Code : Tout sélectionner

--$nb; //specifier la ligne à effacer
Je veux retoucher un fichier texte et effacer la première ligne du fichier. $nb correspond à la ligne à effacer. Mais je comprend rien à cette fonction. Si je déclare la variable comme ceci :

$nb="1";

il ne se passe rien, pas plus qu'avec --$nb;

Que signifie ces deux petits traits avant $nb ?

Je commence à m'énerver sur ce truc, j'ai fais toute la doc en ce qui concerne les variables, et y a pas une seule explication. :(