Passage d'un array à une fonction

Eléphant du PHP | 60 Messages

07 avr. 2006, 20:16

Je souaite passer un tableau à une fonction, mais il me manque quelque chose.
// je récupère mes variable
$tabAdresse["nom"] = $_POST['frm_nom'];
$tabAdresse["prenom"] = $_POST['frm_prenom'];

// et j'essaye de les afficher
fctAffiche ($tabAdresse);

// oups, ca marche pas
function fctAffiche ($tabAffiche)
{
echo $tabAffiche["nom"] ;
echo $tabAffiche["prenom"] ;
}
Ou est l'erreur svp

Amicalement

Stéphane

Mammouth du PHP | 768 Messages

07 avr. 2006, 20:27

http://php.developpez.com/faq/?page=var ... isfonction

:arrow: n'utilise pas la fonction avant de l'avoir déclarée
M A R I O
Si une patte de lapin porte bonheur, qu'a-t-il bien pu arriver au lapin ?

Eléphant du PHP | 60 Messages

07 avr. 2006, 20:58

Effectivement, mais j'ai écrit ces quelques lignes pour pessayer de présenter clairement ma demande et ne pas embrouiller tous le monde avec un extrait de mon code, qui sortit de son contexte serait peu compréhensible.

En fait, ma fonction fctAffiche est "logée" dans un autre fichier .php inclus par un include avant mon code.

Mon code serait donc plus proche de ceci :
function fctAffiche ($tabAffiche) 
{ 
echo $tabAffiche["nom"] ; 
echo $tabAffiche["prenom"] ; 
} 

// je récupère mes variable d'un formulaire
$tabAdresse["nom"] = $_POST['frm_nom']; 
$tabAdresse["prenom"] = $_POST['frm_prenom']; 

// et j'essaye de les afficher 
fctAffiche ($tabAdresse);
Ce code me génère une erreur sur le fichier incluant la fonction fctAffiche :
Missing argument for fctAffiche() in ...

Amicalement

Stéphane

Mammouth du PHP | 19672 Messages

07 avr. 2006, 21:14

Lors de ta récupération, crée donc ton tableau avant d'y mettre des données :
<?php
function fctAffiche ($tabAffiche)
{
    echo $tabAffiche["nom"] ;
    echo $tabAffiche["prenom"] ;
}

// je récupère mes variable d'un formulaire
$tabAdresse = array("nom"    => $_POST['frm_nom'],
                    "prenom" => $_POST['frm_prenom']);

// et j'essaye de les afficher
fctAffiche($tabAdresse);
?>
Codez en pensant que celui qui maintiendra votre code est un psychopathe qui connait votre adresse :axe:

Eléphant du PHP | 60 Messages

08 avr. 2006, 09:07

Merci de vos réponse, j'ai pu mettre en oeuvre ma fonction.

Une petite dernière sur le tableau associatif. Je ne peu créer mon tableau d'un coup, j'ai quelques variables de mon POST qui doivent être testée avant création.

J'ai fais mes test avant inclusion en stockant dans une variable temporaire et cela fonctionne, mais pas très élégant et risqué de multiplier les variables.
Mais si j'avais souhaité ajouter des éléments après avoir fini l'init de mon tableau ?

// je récupère mes variable d'un formulaire 
$tabAdresse = array("nom"    => $_POST['frm_nom'], 
                    "prenom" => $_POST['frm_prenom']); 

if (machintruc)
{
// vide le tableau précédemment créé !!! je suis pas avancé
$tabAdresse = array("ville" => $machinbidule);

// ou alors, mais génère une erreur !!!
array_push ($tabAdresse, "ville" => $machinbidule);
}
Ma question est : comment ajouter un élément dans un tableau associatif déjà créé ?

Amicalement

Stéphane

Avatar du membre
Modérateur PHPfrance
Modérateur PHPfrance | 10684 Messages

08 avr. 2006, 11:23

Normalement ca se fait tout simplement en définissant le nouvel index et la valeur associée
// je récupère mes variable d'un formulaire 
$tabAdresse = array("nom"    => $_POST['frm_nom'], 
                    "prenom" => $_POST['frm_prenom']); 

$tabAdresse["ville"] = $machinbidule; 
En fait, lors de la création, tu devrais normalement pouvoir garder ton code initiale et simplement ajouter la création du tableau avant
$tabAdresse = array();
// je récupère mes variable d'un formulaire 
$tabAdresse["nom"] = $_POST['frm_nom']; 
$tabAdresse["prenom"] = $_POST['frm_prenom']; 
Ca dépend peut être de la config du php.ini, mais normalement ça devrait fonctionner partout, je te laisse le soin de tester :)

Eléphant du PHP | 60 Messages

08 avr. 2006, 12:45

C'est tout bon

Merci à tous

Stéphane