passage de l'intérieur d'un tableau par référence dans une fonction ?

passage de l'intérieur d'un tableau par référence dans une fonction ? - PHP - Programmation

Marsh Posté le 30-03-2008 à 00:04:33    

youp,
 
 
je ne sais pas si je m'y prends mal ou quoi mais je voudrais passer chaque ligne d'un tableau par référence dans une fonction en ne renseignant que le tableau.
 
En fait, je récupère les donnes d'une DB via :  
 

Code :
  1. $stmt = $mysqli->prepare($query);
  2. $stmt->execute();
  3. $stmt->bind_result($col1,$col2,...)


 
Je ne connais pas à l'avance le nombre de colonnes, mais j'ai un tableau contenant le nom de ces colonnes :

$fields['titre'], $fields['message']...


Donc pour passer mes paramètres à $stmt->bind_result(), j'utilise call_user_func_array() comme ceci (enfin j'aimerais le faire comme ça) :

Code :
  1. call_user_func_array(array($stmt,'bind_result'),$fields) // $stmt->bind_result($fields)


et j'aimerais récupérer les données dans $fields.
 
Mais vous l'aurez deviné, ça ne marche pas :(
 
J'ai essayé avec aussi peu de succès :  

Code :
  1. call_user_func_array(array($stmt,'bind_result'),&$fields) // $stmt->bind_result($fields)


 
Ce qui marche, c'est :

Code :
  1. call_user_func_array(array($stmt,'bind_result'), array(&$fields['titre'],&$fields['message']));


 
Mais du coup, j'en reviens au premier problème qui est que je ne connais pas à l'avance le nombre de champs (ni leurs noms) :(
 
 
Quelqu'un aurait une solution ?
 
 
:jap:


Message édité par art_dupond le 30-03-2008 à 00:04:55

---------------
oui oui
Reply

Marsh Posté le 30-03-2008 à 00:04:33   

Reply

Marsh Posté le 30-03-2008 à 13:20:08    

je dois passer par eval() ?

 

edit: ok c'est bon avec eval(), mais j'aimerais quand même savoir si c'est possible de faire autrement :)


Message édité par art_dupond le 30-03-2008 à 13:56:53

---------------
oui oui
Reply

Marsh Posté le 30-03-2008 à 14:15:02    

J'ai pas trouvé d'autre solution non plus, pour le même genre de problème...dans ce cas il semble impossible d'utiliser les cases d'un tableau plutôt que des variables "standalone".
D'ailleurs pourquoi tu passes un tableau en paramètre, ce n'est pas censé être une liste de variables? Php accepte ça?


---------------
Can't buy what I want because it's free -
Reply

Marsh Posté le 30-03-2008 à 19:54:31    

oui, c'est call_user_func() qui prend une liste de variables.
call_user_func_array(), lui, prend un tableau contenant les arguments.
 
En fait ça marcherait si je ne devais pas passer les variables par référence.
 

Code :
  1. function crumble($pomme,$cassonade,$farine,$beure)
  2. {
  3.     return $pomme+$cassonade+$farine+$beure;
  4. }
  5. $quantites = array(6,250,150,100);
  6. $total = call_user_func_array('crumble',$quantites);


 
mais bon, ça marche bien avec eval, même si c'est un peu plus chippo (il faut créer une chaine contenant la liste des paramètres, au lieu de passer simplement le tableau)
 
 
edit: j'ai un doute maintenant, je ne sais plus si je peux avoir une valeur de retour ou s'il donne True ou False...
ok :

Citation :

Retourne le résultat de la fonction, ou FALSE si une erreur survient.


Message édité par art_dupond le 30-03-2008 à 19:59:08

---------------
oui oui
Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed