• Das kreative Thema des Monats Oktober wird vor allem diejenigen unter Euch besonders ansprechen, denen Do-it-yourself quasi im Blut liegt. Zeigt uns Eure Improvisationskünste oder fotografiert, was andere Leute sich so im Alltag zusammengestrickt haben. --> Zum Mitmachen bitte hier klicken

call_user_func_array übergibt Strings, soll es aber nicht

vcr80

Gestreifter Böhmischer Borsdorfer
Registriert
06.11.08
Beiträge
3.403
Hy!

Ich schreibe gerade ein Programm, das wie das Terminal arbeiten soll, also eine Kommandozeile.

Dazu teile ich den übergebenen String aus der $_POST["command"]-Variable wie folgt auf:
Code:
$command = explode("; ", $_POST["command"]);
$function = $command[0];
for($i=1;$i<count($command);$i++){
	$param_arr[] = $command[$i];
}

Die so entstandene Variable und der Array sollen nun mit call_user_func_array() übergeben werden.

Code:
call_user_func_array($function,$param_arr)

Das funktioniert auch, aber leider nur so lange, bis ich keine Funktion aufrufe, die false und true braucht, da von im array nur Strings drinnen stehen, und ein String, egal ob da true, false oder hollodrio drinnen steht als true gewertet wird.

Was kann ich also tun?

Danke, vcr
 
Also wenn ich dich richtig verstanden habe brauchst du sowas:

Code:
$command = explode("; ", $_POST["command"]);
$function = $command[0];
for($i=1;$i<count($command);$i++){
        if($command[$i] == 'true') {
                $param_arr = true;
                break;
        }
        elseif($command[$i] == 'false') {
                $param_arr = false;
                break;
        }
        else {
	        $param_arr[] = $command[$i];
        }
}

call_user_func_array($function,$param_arr);

oder?
 
Also wenn ich dich richtig verstanden habe brauchst du sowas:

Code:
$command = explode("; ", $_POST["command"]);
$function = $command[0];
for($i=1;$i<count($command);$i++){
        if($command[$i] == 'true') {
                $param_arr = true;
                break;
        }
        elseif($command[$i] == 'false') {
                $param_arr = false;
                break;
        }
        else {
	        $param_arr[] = $command[$i];
        }
}

call_user_func_array($function,$param_arr);

oder?

jap genauso hab ich das jetzt auch gelöst Hätte nur nach was naja einzeiligerem gesucht. Danke trotzdem für deine Hilfe!