• Apfeltalk ändert einen Teil seiner Allgemeinen Geschäftsbedingungen (AGB), das Löschen von Useraccounts betreffend.
    Näheres könnt Ihr hier nachlesen: AGB-Änderung
  • Was gibt es Schöneres als den Mai draußen in der Natur mit allen Sinnen zu genießen? Lasst uns teilhaben an Euren Erlebnissen und macht mit beim Thema des Monats Da blüht uns was! ---> Klick

call_user_func_array übergibt Strings, soll es aber nicht

vcr80

Gestreifter Böhmischer Borsdorfer
Registriert
06.11.08
Beiträge
3.396
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
 

Toddy

Wohlschmecker aus Vierlanden
Registriert
10.05.04
Beiträge
242
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?
 

vcr80

Gestreifter Böhmischer Borsdorfer
Registriert
06.11.08
Beiträge
3.396
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!