OVH Cloud OVH Cloud

[Q] Basique : array globale

19 réponses
Avatar
ASM
Salutatous,

Soit un array
$truc = array();

Soit une fonction

function trouve($quoi) {
$i = 0;
foreach($truc as $element)
if($element == $quoi) $i++;
echo "trouve $i element(s)";
}

comment je fais comprendre à trouve()
d'utiliser l'array $truc ?

bien entendu sans passer cet array en argument

j'ai essayé
foreach($GLOBALS['$truc'] as $element)
ça n'a pas l'air de fonctionner

--
Stephane Moriaux et son [moins] vieux Mac

10 réponses

1 2
Avatar
Olivier Miakinen

Soit un array
$truc = array();

Soit une fonction

function trouve($quoi) {
$i = 0;
foreach($truc as $element)
if($element == $quoi) $i++;
echo "trouve $i element(s)";
}

comment je fais comprendre à trouve()
d'utiliser l'array $truc ?


Une manière de faire consiste à déclarer au début de la fonction que
$truc est une variable globale :

function trouve($quoi)
{
global $truc;

$i = 0;
foreach($truc as $element) {
if ($element == $quoi) $i++;
}
echo "trouve $i element(s)";
}

bien entendu sans passer cet array en argument

j'ai essayé
foreach($GLOBALS['$truc'] as $element)
ça n'a pas l'air de fonctionner


Cette syntaxe (de même que la précédente) se trouve dans
<http://fr3.php.net/global>.
C'est $GLOBALS['truc'] et non pas $GLOBALS['$truc'].

Cordialement,
--
Olivier Miakinen

Avatar
Bruno Desthuilliers
Salutatous,

Soit un array
(snip)

Soit une fonction
(snip)

comment je fais comprendre à trouve()
d'utiliser l'array $truc ? bien entendu sans passer cet array en argument

Tu sais que les globales sont EVIL(tm) ?

Bon, alors:
soluce un:

function trouve($quoi) {
global $truc;
// ...
}

soluce 2
function trouve($quoi) {
foreach($GLOBALS['truc'] as $element)
// ...

Avatar
ASM

Soit un array
$truc = array();

Soit une fonction

function trouve($quoi) {

comment je fais comprendre à trouve()
d'utiliser l'array $truc ?


Une manière de faire consiste à déclarer au début de la fonction que
$truc est une variable globale :


Quand on connait le truc tout est plus facile :-)
Merci.
C'est complètement à l'envers du JavaScript :-(

function trouve($quoi)
{
global $truc;

$i = 0;
foreach($truc as $element) {
if ($element == $quoi) $i++;
}


je vois que tu me corriges mon foreach() avec des { }
c'est obligatoire ces { } ?

echo "trouve $i element(s)";
}

j'ai essayé
foreach($GLOBALS['$truc'] as $element)
ça n'a pas l'air de fonctionner


Cette syntaxe (de même que la précédente) se trouve dans
<http://fr3.php.net/global>.


Je suis infoutu de trouver quoique ce soit là dedans :-(

C'est $GLOBALS['truc'] et non pas $GLOBALS['$truc'].


J'avais déniché $GLOBALS il y a 2 jours
pas eu moyen de le retrouver aujourd'hui.

Je ne dois pas poser les bonnes questions au moteur de recherche ;-(


Bonne matinée

--
Stephane Moriaux et son [moins] vieux Mac


Avatar
ASM

d'utiliser l'array $truc ? bien entendu sans passer cet array en argument

Tu sais que les globales sont EVIL(tm) ?



Heu ?

Ou bien c'est de l'humour, ou bien c'est du chinois
Bref j'ai pô compris.

--
Stephane Moriaux et son [moins] vieux Mac


Avatar
Kupee

d'utiliser l'array $truc ? bien entendu sans passer cet array en
argument

Tu sais que les globales sont EVIL(tm) ?



Heu ?

Ou bien c'est de l'humour, ou bien c'est du chinois
Bref j'ai pô compris.


Il veut dire qu'il vaut mieux s'abstenir d'utiliser de variables
globales et que les passer en paramètres est mieux pour de raisons de
sécurité mais aussi pour éviter des bugs incompréhensibles quand on
s'enmêle les pinceaux et qu'on sait plus d'ou vient une variable.
De même il vaut mieux pour les variables de formulaire ou url utiliser
$_REQUEST['mavariable'] et pour la session $_SESSION['mavariable']



Avatar
Florian Sinatra
*ASM* @ 24/05/2006 11:34 :
Une manière de faire consiste à déclarer au début de la fonction que
$truc est une variable globale :


Quand on connait le truc tout est plus facile :-)
Merci.
C'est complètement à l'envers du JavaScript :-(


J'déteste le Javascript :-( toutes les variables y sont globales ??


Avatar
Fredchou
Tu sais que les globales sont EVIL(tm) ?


Heu ?

Ou bien c'est de l'humour, ou bien c'est du chinois
Bref j'ai pô compris.


Il veut juste dire que c'est pô bien !
--
Fredchou
mailto:


Avatar
Christophe Meresse
$truc = array();
[...]

function trouve($quoi) {
$i = 0;
foreach($truc as $element)
if($element == $quoi) $i++;
echo "trouve $i element(s)";
}


Sans répondre directement à ta question, moi j'utiliserais bien:

$i = count(array_keys($truc,$quoi));

Christophe

Avatar
Christophe Meresse

Tu sais que les globales sont EVIL(tm) ?


Ou bien c'est de l'humour, ou bien c'est du chinois
Bref j'ai pô compris.


En gros, Bruno te dit sur un ton humouristique propre à certains
newsgroups qu'il est reconnu que l'utilisation des globales est à
éviter.

A+
Christophe aka "The Translator" ;)


Avatar
bruno at modulix
ASM wrote:


d'utiliser l'array $truc ? bien entendu sans passer cet array en
argument

Tu sais que les globales sont EVIL(tm) ?



Heu ?

Ou bien c'est de l'humour, ou bien c'est du chinois


Non, de l'anglais.

Bref j'ai pô compris.


Evil : Maléfique. Au sens fort.

Les variables globales sont nocives. Elles introduisent un couplage fort
(ta fonction dépend d'une variable globale, on ne peut donc pas
l'utiliser si cette variable n'existe pas), entrainent des bugs
difficiles à tracer (que se passe-t-il, dans ton code, si un fichier
inclus définit une autre globale avec le même identifiant ?).

Et encore, dans ton exemple, la variable est utilisée en lecture seule...

Il est parfois difficile de les éviter (surtout dans un langage comme
PHP qui n'a pas de notion de module et/ou d'espace de nommage), mais ça
ne devrait pas être une pratique courante, et, quand c'est inévitable,
il vaut mieux prendre des précautions pour éviter les problèmes (par
exemple: convention de nommage pour éviter les conflits de noms, et
avoir la définition de la globale et toutes les fonctions l'utilisant
dans le même fichier).


--
bruno desthuilliers
python -c "print '@'.join(['.'.join([w[::-1] for w in p.split('.')]) for
p in ''.split('@')])"



1 2