J'ai un tableau intitulé $post_data
. Je veux passer ce tableau à une fonction comme argument. Avec ce tableau, je dois passer un autre argument, le 'nom de fonction' appelable comme deuxième argument dans un appel de fonction.
Je ne comprends pas comment y parvenir.
Voici le corps de la fonction qui doit être appelé:
//Following is the function to be called
function walk_recursive_remove(array $array, callable $callback) {
foreach ($array as $k => $v) {
if (is_array($v)) {
$array[$k] = walk_recursive_remove($v, $callback);
} else {
if ($callback($v, $k)) {
unset($array[$k]);
}
}
}
return $array;
}
//Following is the callback function to be called
function unset_null_children($value, $key){
return $value == NULL ? true : false;
}
The function call that I tried is as follows :
//Call to the function walk_recursive_remove
$result = walk_recursive_remove($post_data, unset_null_children);
Quelqu'un peut-il m'aider à corriger l'erreur que je fais en appelant la fonction?
Merci d'avance.
Tout d'abord, la façon d'appeler une fonction comme vous le souhaitez est d'utiliser
call_user_func()
ou
call_user_func_array()
Dans votre cas, parce que vous voulez envoyer des paramètres, vous souhaitez utiliser le second, call_user_func_array()
.
Vous pouvez en savoir plus à ce sujet sur http://php.net/manual/en/language.types.callable.php .
En attendant, j'ai simplifié un peu votre exemple et créé un petit exemple.
function walk_recursive_remove(array $array, callable $callback) {
foreach($array as $k => $v){
call_user_func_array($callback,array($k,$v));
}
}
//Following is the callback function to be called
function unset_null_children($key, $value){
echo 'the key : '.$key.' | the value : '.$value ;
}
//Call to the function walk_recursive_remove
$post_data = array('this_is_a_key' => 'this_is_a_value');
$result = walk_recursive_remove($post_data, 'unset_null_children');
Cet article est collecté sur Internet, veuillez indiquer la source lors de la réimpression.
En cas d'infraction, veuillez [email protected] Supprimer.
laisse moi dire quelques mots