1. Diese Seite verwendet Cookies. Wenn du dich weiterhin auf dieser Seite aufhältst, akzeptierst du unseren Einsatz von Cookies. Weitere Informationen

call_user_func_array übergibt Strings, soll es aber nicht

Dieses Thema im Forum "PHP & Co." wurde erstellt von vcr80, 05.07.09.

  1. vcr80

    vcr80 Doppelter Melonenapfel

    Dabei seit:
    06.11.08
    Beiträge:
    3.352
    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
     
  2. Toddy

    Toddy Wohlschmecker aus Vierlanden

    Dabei seit:
    10.05.04
    Beiträge:
    240
    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?
     
  3. vcr80

    vcr80 Doppelter Melonenapfel

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

Diese Seite empfehlen