Fonction PHP

Résolu/Fermé
thomas3347 Messages postés 18 Date d'inscription vendredi 7 septembre 2007 Statut Membre Dernière intervention 6 novembre 2010 - 11 janv. 2009 à 23:08
 Utilisateur anonyme - 12 janv. 2009 à 00:58
Bonjour,
J'ai un probleme avec une fonction en PHP.

Si je prédéfinis une valeur pour une variable, le script est bon.
Si j'utilise une fonction pour attribuer une valeur à cette même variable, le script plante...

Allez voir ici !
http://www.phpfrance.com/forums/voir_reponse-275349.php#275349

Merci
A voir également:

13 réponses

Utilisateur anonyme
11 janv. 2009 à 23:31
Qui est necessite ?

Dans une fonction la variable est locale. Elle n'existe pas ! Donc tu utilises $necessite, elle n'est pas déclarés à l'intérieur de la fonction mais à l'extérieur.

Par exemple :

$toto = 9;

function afficher() {
echo $toto;
}

afficher();


Cette fonction ne m'affichera rien ou bien une erreur !


SOIT

Tu déclares ta variable en global.
En écrivant global $necessite avant de l'affecter :
Dans mon exemple :

global $toto;
$toto = 9;

function afficher() {
echo $toto;
}

afficher();


--->Affichera 9

OU

Dans ta fonction tu passes $necessite en paramètre :

accessibilite("Rayon",$necessite);

Dans mon exemple :


$toto = 9;

function afficher($toto) {
echo $toto;
}

afficher($toto);


--->Affichera 9


Tu comprends ?
0
thomas3347 Messages postés 18 Date d'inscription vendredi 7 septembre 2007 Statut Membre Dernière intervention 6 novembre 2010 2
11 janv. 2009 à 23:36
Ok je comprends.

Enfait $necessite est un tableau déclaré extérieurement à la fonction. Je teste ça tout de suite.

Merci d'avoir répondu !!
0
Utilisateur anonyme
11 janv. 2009 à 23:39
Derien !!

Un résolu si c'est bon ! Ou si tu as d'autres questions ^^
0
thomas3347 Messages postés 18 Date d'inscription vendredi 7 septembre 2007 Statut Membre Dernière intervention 6 novembre 2010 2
11 janv. 2009 à 23:47
global $necessite;
$necessite = array(... ... ... ...);

function accessibilite($choix) {
	
		echo "On fait le test pour : " . $choix . "<br/>";
		$nom = $necessite[$choix];  // !!!!!!!!!!!! ça plante ici !!!!!!!!!!
		echo "On obtient : " . $nom . "<br/>";
		
		if (in_array($nom, $necessite))
		{
			echo "On possede bien un " . $nom . ", il est possible de construire ce truc";
		}
		else {
			echo "On ne possede pas de " . $nom . ", on ne peut pas construire ce truc";
		}
}

accessibilite("Rayon");


J'obtiens :

On fait le test pour : Rayon
On obtient : 

Warning: in_array() [function.in-array]: Wrong datatype for second argument in /mnt/167/sdb/a/2/thomas3347/batiments.php on line 40
On ne possede pas de , on ne peut pas construire ce truc 


C'est comme si $nom ne pouvait pas prendre la valeur du tableau "necessite"
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
thomas3347 Messages postés 18 Date d'inscription vendredi 7 septembre 2007 Statut Membre Dernière intervention 6 novembre 2010 2
11 janv. 2009 à 23:50
OOOKKKKK c'est bon !!! Je l'ai passée en paramètre ma variable $necessite !!!

Merci beaucoup
0
Utilisateur anonyme
11 janv. 2009 à 23:52
j'ai di une bétise je crois,

essaie d'écrire global $necessite pas avant la déclaration mais juste avant echo "On fait le test pour : " . $choix . "<br/>";
0
Utilisateur anonyme
11 janv. 2009 à 23:54
Comme tu veux ^^ ! Derien !
0
thomas3347 Messages postés 18 Date d'inscription vendredi 7 septembre 2007 Statut Membre Dernière intervention 6 novembre 2010 2
12 janv. 2009 à 00:03
Un tableau associatif crée en PHP ressemble à ça :

Array
(
    [Centrale electrique] => Chantier
    [Rayon] => Chantier
)


Est-ce que ça existe un tableau à 3 colones ??
J'utilise les tableaux en PHP pour ne pas faire de requete SQL à chaque fois que la fonction s'execute !
Sinon beaucoup plus facile de faire un script avec SQL, surtout avec les quantifieurs "WHERE"...
0
Utilisateur anonyme
12 janv. 2009 à 00:16
Oui c'est possible.

Il faut faire un tablau de tableau etc...

$tab = new Array(10); //Première dimension
for($i=0;$ i<$tab.length;$ i++){
$tab[$i] = new Array(10); // Deuxième dimension
for($j=0; $j<tab[$i].length; $j++)
$tab[$i][$j] = new Array(10); // troisième
}
Ca fait un tableau 10x10x10.

J'ai pas testé mais essaie de voir sur le net. Ça fait plus d'un an que je ne fais plus de PHP :( ça me manque ^^
0
thomas3347 Messages postés 18 Date d'inscription vendredi 7 septembre 2007 Statut Membre Dernière intervention 6 novembre 2010 2
12 janv. 2009 à 00:21
Reagrde :

http://thomas3347.free.fr/test.php

Je souhaiterais que :

[Centrale electrique] => Array  // Prenne la valeur de [0] et non pas "array"
        (
            [0] => Chantier
            [1] => 01
        )
0
Utilisateur anonyme
12 janv. 2009 à 00:27
Je comprends pas ce que tu veux faire !
0
thomas3347 Messages postés 18 Date d'inscription vendredi 7 septembre 2007 Statut Membre Dernière intervention 6 novembre 2010 2
12 janv. 2009 à 00:38
Je te donne un exemple :

Je veux éclairer mon salon
* est-ce que je reçois de l'électricité
** est-ce que j'ai suffisament d'électricité

Exemple :

Le nécessaire pour chaque action
Array
(
    [Eclairer] => Electricite
        (
            [0] => Electricité
            [1] => Niveau 5
        )

    [xxx] => xxx
        (
            [0] => xxx
            [1] => Niveau 3
        )

)

Ce que je possède actuellement
Array
(
    [Electricite] => Niveau 3
)


Alors est-ce que je peux eclairer mon salon ??

Tout celà est très facile à faire avec mySQL mais pas en PHP ^^ Le but étant d'alléger le code.

Merci pour tout
0
Utilisateur anonyme
12 janv. 2009 à 00:58
<?php

$necessite = array("Eclairer" => array("Electricité","Niveau 5"), "xxx"=> array("xxx2","Niveau 3"));

echo $necessite["Eclairer"][0]; //affiche Electricité
echo $necessite["Eclairer"][1]; //affiche Niveau 5

echo "<br/><br/>";

//ou encore

foreach($necessite as $nom => $indice)
foreach($indice as $valeur)
echo $nom.":".$valeur."<br/>";
/*
Affichage
Eclairer:Electricité
Eclairer:Niveau 5
xxx:xxx2
xxx:Niveau 3
*/

?>


C'est ça ?!

Moi j'ai cours de recherche opérationnelle demain donc je te laisse ! je verrai tes réponses demain soir !!

Bon codage =) Une belle nuit s'annonce pour toi :p
0