fonction: probleme de debutant [PHP] - PHP - Programmation
Marsh Posté le 08-03-2008 à 02:03:14
un petit "GLOBAL $carnet;" au début de chaque fonction serait le bienvenue....
Marsh Posté le 08-03-2008 à 09:28:29
Les GLOBAL c'est le mal, mais babasss à raison sur le fond, la variable $carnet n'est dans tes fonctions, ni passée en paramètre, ni déclarée... et donc inconnue.
Marsh Posté le 08-03-2008 à 11:22:31
A la place de mettre GLOBAL, tu peux trés bien faire :
Code :
|
Marsh Posté le 08-03-2008 à 19:39:34
Merci pour vos réponses .
Je comprend un peu mieux les fonction (ou plutôt les déclarations de variables) en PHP maintenant .
Juste une question pourquoi doit on éviter d'utiliser global ?
Marsh Posté le 08-03-2008 à 22:12:05
Parce que global comme son nom l'indique c'est le scope global (dispo partout dans le code bien entendu sauf dans les fonctions/classes).
Donc ton problème c'est que la variable n'était pas accessible. Maintenant tu modifies son contenu dans la fonction mais donc dans le reste. Pour une variable dans un contexte particulier ça passe. Si t'as des classes, des fonctions de partout c'est vite le bordel!
Et conceptuellement, tu passes un paramètre à une fonction, elle trifouille se qu'elle doit faire et tu récupères ce qu'elle te renvoit. Les modif de pointeurs, références et autres tripotages de l'existant dans un petit coin sombre, c'est les bugs qui arrivent, la fête aux effets de bords
Donc essaye de faire propre. A la limite parfois une classe vaut mieux qu'un global, t'accèdes aux propriétés de partout
Après un cas d'exception peut nécessiter une mesure d'exception
Marsh Posté le 09-03-2008 à 19:45:15
Merci pour ce petit cour théorique c'est beaucoup plus clair maintenant .
Marsh Posté le 08-03-2008 à 00:45:15
bonjour,
je débute en PHP et j'ai quelque souci pour une fonction:
je souhaite créer une fonction qui vérifie si un "nom" est présent dans un tableau et si c'est le cas renvoi la ligne du tableau où est présent le nom.
Voici le tableau dans lequel les recherches sont faites:
<?php
$carnet = array( array("nom"=>"Durand", "prenom"=>"Pierre",
"tel"=>"0101010101", "ville"=>"Paris" ),
array("nom"=>"NGuyen", "prenom"=>"Olivier",
"tel"=>"0606060606", "ville"=>"Lyon" ),
array("nom"=>"Martin", "prenom"=>"Jeanne",
"tel"=>"0404040404", "ville"=>"Marseille" ),
array("nom"=>"Dubois", "prenom"=>"Martin",
"tel"=>"0600000000", "ville"=>"Paris" ),
array("nom"=>"Phan", "prenom"=>"Michele",
"tel"=>"0100000000", "ville"=>"Paris" ),
array("nom"=>"Duduche", "prenom"=>"Marie",
"tel"=>"0505050505", "ville"=>"Bordeaux" ),
array("nom"=>"Dupond", "prenom"=>"Youssouf",
"tel"=>"0611111111", "ville"=>"Marseille" ),
array("nom"=>"Delamarre", "prenom"=>"Abdel",
"tel"=>"0411111111", "ville"=>"Lyon" ) );
?>
Et voici mon 'script' php qui ne marche pas:
<?php
include("carnet.inc" );
function tab_php_to_xhtml ($ligne) //retourne la ligne du tableau en xhtml
{
return "<table><tr> <td>".$ligne['nom']."</td> <td>".$ligne['prenom']."</td> <td>".$ligne['tel']."</td> <td>".$ligne['ville']."</td></tr></table>";
}
echo tab_php_to_xhtml($carnet[0]); //affiche la premiere ligne du tableau.
function ligne_du_nom($n) //devrai retourner la ligne où se trouve le nom passer en argument
{
for ($i=0;$i<8;$i++) {
if ($n==$carnet[$i]['nom']) { return tab_php_to_xhtml($carnet[$i]); }
}
}
echo ligne_du_nom("Durand"); //n'affiche rien.....
Je ne vois pas où est mon erreur dans la 2eme fonction?...
Merci d'avance .