[PHP] Global

Résolu/Fermé
Kyuzo Messages postés 35 Date d'inscription samedi 9 août 2008 Statut Membre Dernière intervention 8 juillet 2011 - Modifié par Kyuzo le 8/07/2011 à 11:59
Reivax962 Messages postés 3671 Date d'inscription jeudi 16 juin 2005 Statut Membre Dernière intervention 11 février 2021 - 8 juil. 2011 à 14:06
Bonjour,

Ce script ne fonctionne pas, pouvez-vous me dire pourquoi?

<?php 
function test(){ 
require_once "./class.php"; 
$didelim = array(); 
$display=apply(); 
return $display; 
} 

echo test(); 
?>


class.php
<?php 
function apply() { 
global $didelim; 
for ($r = 1; $r < 10; $r++) 
for ($c = 1; $c < 10; $c++) { 
if (in_array("($r, $c)", $didelim)) continue; array_push($didelim, "($r, $c)"); 
} 
return $didelim; 
} 
?>


Merci d'avance
A voir également:

5 réponses

Re

Après essai...

Tu as bien déclaré global $didelim; dans apply() mais tu as oublié de la faire dans test() !
1
Kyuzo Messages postés 35 Date d'inscription samedi 9 août 2008 Statut Membre Dernière intervention 8 juillet 2011
8 juil. 2011 à 13:41
Si
$didelim = array();
0
j'ai écrit GLOBAL $didelim;
Ça tu ne l'as pas fait dans test()
0
Kyuzo Messages postés 35 Date d'inscription samedi 9 août 2008 Statut Membre Dernière intervention 8 juillet 2011
8 juil. 2011 à 13:50
$didelim est crée dans test() elle n'existe pas hors de test()
0
Justement, c'est ça ton problème ! Telle que tu la déclares, elles est locale à test et n'est pas utilisable dans apply()
Par contre, si tu mets global $didelim; dans test, elle devient globale.
La déclarer hors de toute fonction comme le suggère Reivax962 devrait marcher aussi, mais le global $didelim; dans test que je te suggère depuis le début fonctionne.
0
Reivax962 Messages postés 3671 Date d'inscription jeudi 16 juin 2005 Statut Membre Dernière intervention 11 février 2021 1 011
8 juil. 2011 à 14:06
D'accord avec le père, même si je préfère qu'elle soit déclarée proprement plutôt que par le truchement de global, d'autant qu'elle n'est même pas utilisée dans test().
Allez, +1 pour cette solution ^^
0
thevinou Messages postés 1007 Date d'inscription lundi 28 février 2011 Statut Membre Dernière intervention 10 mars 2015 190
8 juil. 2011 à 11:59
Le require dans une fonction, c'est limite, met le avant, ça ne coute rien
0
Kyuzo Messages postés 35 Date d'inscription samedi 9 août 2008 Statut Membre Dernière intervention 8 juillet 2011
8 juil. 2011 à 12:00
Ça change rien
0
ratikuss Messages postés 2004 Date d'inscription vendredi 8 juin 2007 Statut Membre Dernière intervention 14 décembre 2016 262
8 juil. 2011 à 12:03
Il manque une { après ta première boucle for
0
Kyuzo Messages postés 35 Date d'inscription samedi 9 août 2008 Statut Membre Dernière intervention 8 juillet 2011
8 juil. 2011 à 12:04
C'est pas le problème
Lance le script pour voir l'erreur
0
Bonjour,

Tu dis que ça ne fonctionne pas... Que voulais tu obtenir et qu'obtiens-tu ?
0

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

Posez votre question
Reivax962 Messages postés 3671 Date d'inscription jeudi 16 juin 2005 Statut Membre Dernière intervention 11 février 2021 1 011
8 juil. 2011 à 13:51
Bonjour,

Il me semble que tu devrais déclarer $didelim en dehors de toute fonction avant de pouvoir l'utiliser en GLOBAL dans des fonctions.

Je te suggère ceci :
<?php 
$didelim = array(); 
require_once "./class.php"; 

function test(){ 
$display=apply(); 
return $display; 
} 

echo test(); 
?>



class.php

<?php 
function apply() { 
global $didelim; 
for ($r = 1; $r < 10; $r++) 
for ($c = 1; $c < 10; $c++) { 
if (in_array("($r, $c)", $didelim)) continue; array_push($didelim, "($r, $c)"); 
} 
return $didelim; 
} 
?>
0
Kyuzo Messages postés 35 Date d'inscription samedi 9 août 2008 Statut Membre Dernière intervention 8 juillet 2011
Modifié par Kyuzo le 8/07/2011 à 13:56
Oui c'est ça merci
0
Il me semble que tu devrais déclarer $didelim en dehors de toute fonction avant de pouvoir l'utiliser en GLOBAL dans des fonctions.
C'est inutile
Mais si on utilise une variable dans une fonction sans mettre global, comme Kyuzo le fait avec $didelim; dans test(), la variable n'est pas globale, tout simplement. Il suffit de mettre global dans toutes les fonctions où on l'utilise, même si elle n'est pas définie en dehors de ces fonctions.
0