OVH Cloud OVH Cloud

Je me noie dans un tableau

2 réponses
Avatar
Zouplaz
Bonjour, j'ai un problème que vous allez résoudre facilement. j'ai beau
eu lire la doc, j'y arrive pas !

1) J'ai une méthode qui permet d'ajouter des éléments à un tableau,
chaque élément étant de la forme key/value :

function addScriptEvent($jsevent,$jscode)
{
$this->eventScripts[] = array($jsevent => $jscode);
}

Bien, j'ai trouvé que ça comme syntaxe puisque je peux pas écrire
$this->eventScripts[] = $jsevent => $jscode;
alors que je peux écrire
$this->eventScripts[] = array("evt1" => "code1" , "evt2" => "code2");

Je ne peux pas non plus écrire
$this->eventScripts[$jsevent] = $jscode;
sinon je n'ai qu'une entrée possible pour chaque clé (logique)

2) Je veux ensuite parcourir le tableau en question et récupérer chaque
paire key value.

asort($this->eventScripts);
foreach ($this->eventScripts as $event => $code)
{
echo "$event : $code\n";
}

Ca me retourne Array0 ou je sais plus quoi... Evidemment il tombe sur une
clé qui est un tableau...

J'ai essayé
echo $this->eventScripts[$event];
marche pô

puis
echo $this->eventScripts[$event[0]];
marche pô


Rhâaa j'en peux plus... Un ptit peu d'aide ??

Merci

2 réponses

Avatar
Zouplaz
Zouplaz - :

Bonjour, j'ai un problème que vous allez résoudre facilement. j'ai
beau eu lire la doc, j'y arrive pas !

1) J'ai une méthode qui permet d'ajouter des éléments à un tableau,
chaque élément étant de la forme key/value :

function addScriptEvent($jsevent,$jscode)
{
$this->eventScripts[] = array($jsevent => $jscode);
}

Bien, j'ai trouvé que ça comme syntaxe puisque je peux pas écrire
$this->eventScripts[] = $jsevent => $jscode;
alors que je peux écrire
$this->eventScripts[] = array("evt1" => "code1" , "evt2" => "code2");

Je ne peux pas non plus écrire
$this->eventScripts[$jsevent] = $jscode;
sinon je n'ai qu'une entrée possible pour chaque clé (logique)

2) Je veux ensuite parcourir le tableau en question et récupérer
chaque paire key value.

asort($this->eventScripts);
foreach ($this->eventScripts as $event => $code)
{
echo "$event : $coden";
}



Bon bin j'ai fait ça :
foreach ($this->eventScripts as $events)
foreach ($events as $event => $code)
echo "$event : $code";

Un chouilla lourd quand même... (mais logique, je le concède !)

Avatar
Khone
Salut

C'est normal, avec ta méthode, ton tableau est structuré comme ca :

$this->eventScripts[$i][$jsevent] = $jscode

pour le parcourir :

for ($i = 0; $i < sizeof($this->eventScripts); $i ++)
foreach ($this->eventScripts[$i] as $k => $v)
echo $k." : ".$v."n";


AMHA, tu pourrais l'organiser plutot comme ca :

$this->eventScripts[$jsevent] = array($jscode1, $jscode2, ...)

et ta méthode devient :

function addScriptEvent($jsevent,$jscode)
{
if (!isset($this->eventScripts[$jsevent]))
$this->eventScripts[$jsevent] = array();
$this->eventScripts[$jsevent][] = $jscode;
}

Khône