Passer -1 à une fonction

N3k.0
Invité n'ayant pas de compte PHPfrance

07 nov. 2011, 17:57

Bonjour,
J'ai un problème : J'essaye de passer -1 a une fonction, mais j'ai l'impression que ca ne fonctionne pas.
Pouvez vous m'aider ?
$arborescence_log = 0;

function log_it($txt, $a) {
    $a=intval($a);
    $logFileName = "LOG.txt";
    $fh = fopen($logFileName, 'a+');
    global $arborescence_log;
    if ($a < 0)
        $arborescence_log=$arborescence_log+$a;
    for ($n = 0; $n < $arborescence_log; $n++)
        fwrite($fh, "|\t");
    fwrite($fh, $txt . "\n");
    if ($a > 0)
        $arborescence_log=$arborescence_log+$a;
    fclose($fh);
}

log_it("=== SERVEUR.PHP ===", 1);
/*[...]*/
log_it("=== FIN SERVEUR.PHP ===", -1);
Donne :
=== SERVEUR.PHP ===
| === FIN SERVEUR.PHP ===

Mammouth du PHP | 672 Messages

07 nov. 2011, 18:19

Bonjour.

Pour vérifier, tu peux toujours afficher la valeur que tu passes.
Tu constateras que tu passes bien -1 à ta fonction... Et donc que le problème vient d'ailleurs !

Tu veux quoi au juste ?
Si je devine bien, tu voudrais :
SI $a < 0, écrire $txt dans LOG
SI $a > 0, ne rien faire.

Constat : dans les deux cas, tu écris.
=> C'est que le test est mal fait :mrgreen:

Je te conseille de revoir tes cours sur le IF, particulièrement l'utilisation des accolades {...

ViPHP
ViPHP | 1996 Messages

08 nov. 2011, 01:02

Tu fais ton traitement avant de vérifier si ta variable est positive ou négative.
Dans les deux cas si a >0 ou a < 0 tu retourne $arborescence_log=$arborescence_log+$a; Est ce normal ?

Si j'ai bien compris tu veux jouer sur les curseurs d'écriture.
+1 => tu complètes en mettant une ligne à ton fichier log avec === SERVEUR.PHP ===
-1 => tu veux fermer ton ficher avec === FIN SERVEUR.PHP ===

Il y a une fonction pour cela toute prête : http://www.php.net/manual/fr/function.f ... ntents.php

Dans ton cas :
<?php
$arborescence_log = 2;
$texte = "=== SERVEUR.PHP ==="."\n";
for ($n = 0; $n < $arborescence_log; $n++)
   $texte .=  "ligne : ".$n."|\t\n";
$texte .= "=== FIN SERVEUR.PHP ===";
file_put_contents ("LOG.txt",$texte);
?>
Si tu veux créer ta fonction qui créer ton fichier log, je te conseille de travailler avec les tableaux
<?php
function log_it ($tableauTexte=FALSE)
{
	if (empty($tableauTexte) && !is_array($tableauTexte)) //si pas de texte
		return FALSE;
		
	$sortie = "=== SERVEUR.PHP ==="."\n";
	for ($n = 0; $n < count($tableauTexte); $n++)
   		$sortie .=  "ligne : ".$n." - ".$tableauTexte[$n]." - |\t\n";
	$sortie .= "=== FIN SERVEUR.PHP ===";
	
	return $sortie;
}

$tab = array (":: asb", "ldedede", "hhhiuhiuh");
if ($texte = log_it ($tab))
     file_put_contents ("LOG.txt",$texte);
?>
It is nice to be important but it is more important to be nice
http://www.aureuswebfactory.fr