Bonjour,

Je reviens vers PHP après une longue période (1+an) d'abstinence et je coince sur un problème surement très basique, mais je coince:
J'ai un tableau de ce type:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
 
$tableau	array[5]		
[0]	array[1]		
    [champ]	string	"Ma_donnee_1"	
[1]	array[1]		
    [champ]	string	"Ma_donnee_2"	
[2]	array[1]		
    [champ]	string	"variable_1"	
[3]	array[1]		
    [champ]	string	"variable_2"	
[4]	array[1]		
    [champ]	string	"Ma_donnee_3"
Et je veux implode la liste des 'champ' dans une requete SQL:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
 
$sql="SELECT * FROM table_champs WHERE champ IN(".implode(",",array_filter($tableau,
                                                                                                                function($var){
                                                                                                                    if(array_key_exists("champ", $var))
                                                                                                                    return $var['champ'];
                                                                                                                })).") ";
Je pense que j'utilise bien le array_filter, puisque lorsque je debug, mon $var contient bien les array[1] contenant "champ", mais la requete finale donne ceci:

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
 
(string) Select DISTINCT(table_gestion) from ref_donnees_variables where donnee IN(Array,Array,Array,Array,Array)
au lieu du contenu de "champ".

J'ai même tenté de return $var[0]['champ'], mais le IN est carrément vide avec ça.

Qu'est-ce qui peut être faux dans mon array_filter?

D'avance merci.

Vincent.