2016-03-20 8 views
-1

Ich habe eine Methode, die eine PHP-String-Funktion basierend auf Benutzereingabe ausgeführt wird. Ich sammle alle Parameter aus dem Benutzerformular und verwende sie in der Methode, die den Helfer erstellt und die Daten zurückgibt. Ich muss jedoch in der Lage sein, jeden Array-Knoten/jedes Segment als separate Zeichenfolge innerhalb des Funktionsaufbaus auszugeben.Ausgabe-Array zu Strings innerhalb der Funktion

So die Benutzerdaten gesammelt, wie folgt:

2 Parameter, 1 Funktion, 1 Thema

Parameter: " " und "_" Funktion: "str_replace" Betreff: „Dieser Test "

die Parameter werden als Array gesammelt, die am Ende wie folgt:

$parameters(" ", "_") < - Array

ich es versuchte, indem es wie folgt implodiert:

$parameters = "'".implode("','",$parameters)."'"; 

und diese:

$parameters = implode(',',$parameters); 

Dieses 'erscheint' zu tun, was ich, indem ich brauche:

$parameters = " ,_" 

oder

$parameters = "' ','_'"; 

Aber wenn ich versuche, die PHP-String-Funktion zu erstellen, würde es aufgrund der Parameter, die eine einzelne Zeichenfolge anstelle von separaten Zeichenfolgen sind, fehlschlagen.

ich versuche, meine Daten für den Benutzer wie folgt zurück:

$data = $myFunction($parameters, $subject); 
return $data; 

ich nicht eine „Schleife“ in dem Funktionsaufruf ausgeführt werden kann, so dass ich schlage jetzt eine Mauer. Wie kann ich zählen oder wissen, wie viele Parameter übergeben werden, damit ich sie so weitergeben kann, wie sie sein müssen?

Es müsse (in diesem Fall) sein:

$data = $myFunction($parameter1, $parameter2, $subject); 

Dies würde aber abhängig von den Parametern und Funktion bereitgestellt ändern.


* EDIT *

So var_export mit, ich weiß noch nicht, wie die unbekannte Anzahl von Elementen in die Funktion Build einfügen ...

var_export gibt mir die mehrdimensionale Array-Ergebnisse, aber ich kann diese eine Reihe von Möglichkeiten bekommen. Mein Problem kommt in versuchen, sie in die Funktion Build hier einfügen:

In dem 'HIER' müsste der Dump sein ...

Ich muss in der Lage sein, etwas zu tun wie:

$data = $myFunction(foreach($parameters as $parameter){$parameter.','}, $subject); 

(Wenn das mehr Sinn macht ...)

Antwort

0

Es existiert eine eingebaute Funktion, dies zu tun: call_user_func_array(). Diese Funktion benötigt als erste Argumente den gewünschten Funktionsnamen und ein Array mit allen Argumenten als zweites Argument. So haben Sie $subject zu $parameters anhängen und es auf diese Weise nennen:

$function = "str_replace"; 
$subject = "This Test"; 
$parameters = [ " " , "_" ]; 

$parameters[] = $subject; 
echo call_user_func_array($function, $parameters); 

Will Ausgang:

This_Test 

Ich nehme an, dass Ihr Code soll mehr als eine Funktion laden: das Hauptproblem mit Das heißt, Sie teilen Funktionsargumente in zwei Kategorien auf (Subjekt und Parameter). Welches Kriterium müssen Sie also beitreten? Im gegebenen Fall ist einfach, aber wenn das "Thema" nicht das letzte Funktionsargument ist, wie können Sie fortfahren?

Und wenn es eine Funktion mit zwei oder mehr variablen Parametern gibt?

Vielleicht können Sie etwas tun:

$function = "str_replace"; 
$parameters = [ " " , "_", "" ]; // array with ALL default parameters 
$replace = [ 2 ];    // array with index of customizable parameters 
$subject = [ "This Test" ]; // array with custom parameters 

foreach($subject as $key => $val) 
{ 
    $parameters[ $replace[ $key ] ] = $val; 
} 
echo call_user_func_array($function, $parameters); 

Also, diesen Satz von Parametern:

$function = "strpos"; 
$parameters = [ "My Basical Basic Text" , '', 0 ]; 
$replace = [ 1, 2 ]; 

$subject = [ 'Basic' ]; 

Ihre Funktion aufrufen Sie erhalten: „3“ (string Position von „Basical „), während $subject auf diese Weise ändern:

$subject = [ 'Basic', 4 ]; //11 

Sie erhalten

Bitte beachten Sie auch, dass language constructs nicht durch call_user_func_array() als callables gekennzeichnet sind.


+0

Danke! Das brachte mich dahin, wo ich sein musste. –

0

Sie Vars/Arrays als Strings wollen?

var_export($data, true) 

http://php.net/manual/en/function.var-export.php

+0

Ich verstehe Lesen Sie das, aber wie kann ich das in den Funktionsaufruf zu arbeiten? Das ist, wo ich aufgehängt bin. Ich aktualisierte das OP, um ein besseres Beispiel des Problems zu zeigen ... –

Verwandte Themen