[PHP] Global

Résolu
Kyuzo Messages postés 35 Date d'inscription   Statut Membre Dernière intervention   -  
Reivax962 Messages postés 3672 Date d'inscription   Statut Membre Dernière intervention   - 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

le père
 
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   Statut Membre Dernière intervention  
 
Si
$didelim = array();
0
le père
 
j'ai écrit GLOBAL $didelim;
Ça tu ne l'as pas fait dans test()
0
Kyuzo Messages postés 35 Date d'inscription   Statut Membre Dernière intervention  
 
$didelim est crée dans test() elle n'existe pas hors de test()
0
le père
 
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 3672 Date d'inscription   Statut Membre Dernière intervention   1 011
 
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 1008 Date d'inscription   Statut Membre Dernière intervention   190
 
Le require dans une fonction, c'est limite, met le avant, ça ne coute rien
0
Kyuzo Messages postés 35 Date d'inscription   Statut Membre Dernière intervention  
 
Ça change rien
0
ratikuss Messages postés 1996 Date d'inscription   Statut Membre Dernière intervention   262
 
Il manque une { après ta première boucle for
0
Kyuzo Messages postés 35 Date d'inscription   Statut Membre Dernière intervention  
 
C'est pas le problème
Lance le script pour voir l'erreur
0
le père
 
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 3672 Date d'inscription   Statut Membre Dernière intervention   1 011
 
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   Statut Membre Dernière intervention  
 
Oui c'est ça merci
0
le père
 
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