2017-04-02 3 views
-4

Ich möchte es Wert als Argument in meiner Funktion zu übergebenSchwierigkeit, Argumente in Funktion zu übergeben?

function dostuff($input) { 
global $input; 

    if ($input == 5) { 
     $output = "Success"; 
    } else { 
     $output = "Failure"; 
    } 
echo $output; 
} 

Warum

dostuff(5); 

nicht der Fall ist läuft die Ausgangsgröße Echo („Erfolg“), wie es soll?

+0

Ich bekomme es nicht ... warum hast du '$ input = 5;' wenn du 'dostuff (5)' sowieso benutzt? –

+0

Ich denke, keine Notwendigkeit von globalen $ -Eingabe; –

+0

Weil Sie die globale Variable '$ input' mit' global $ input; 'verwenden und das ist nicht gleich 5. – Rizier123

Antwort

0

Sie brauchen nicht zu setzen, versuchen Sie dies:

function dostuff($input) { 
    if ($input == 5) { 
     $output = "Success"; 
    } else { 
     $output = "Failure"; 
    } 
echo $output; 
} 

Damit dostuff(5) Rückkehr "Erfolg"

Erläuterung:

global ist globale Variable verwendet in Ihre Funktion (http://php.net/manual/en/language.variables.scope.php), Sie brauchen es nicht, weil Sie $input in Funktionsparameter übergeben eters.

+2

Während dieses Code-Snippet die Frage lösen kann, [hilft eine Erklärung] (http://meta.stackexchange.com/questions/114762/explaining-entirely-code-based-answers) wirklich, um die Qualität Ihres Beitrags zu verbessern. Denken Sie daran, dass Sie die Frage für Leser in der Zukunft beantworten, und diese Leute könnten die Gründe für Ihren Codevorschlag nicht kennen. Bitte versuchen Sie auch nicht, Ihren Code mit erklärenden Kommentaren zu füllen, dies reduziert die Lesbarkeit sowohl des Codes als auch der Erklärungen! – Rizier123

+0

Vielen Dank für Ihr Feedback. Ich versuche meinen Post mit mehr Erklärungen zu bearbeiten. – Jouby

2

Erweiterung auf Jouby Erklärung:

In PHP, im Gegensatz zu vielen anderen Sprachen, Variablen sind standardmäßig lokale Variablen. Dies vereinfacht einige Aspekte beim Schreiben sicherer Funktionen (mit weniger versehentlichen Nebenwirkungen), erfordert jedoch einen zusätzlichen Schritt, wenn Sie wirklich globale Variablen verwenden möchten.

In einer Funktionsdefinition sind Parametervariablen wirklich spezialisierte lokale Variablen. Der magische Teil einer Parametervariablen ist, dass sie automatisch zugewiesen wird, wenn Sie die Funktion aufrufen.

Das Schlüsselwort global in PHP ordnet den Variablennamen der globalen Variablen zu und ersetzt damit effektiv die lokale Variable. Sie müssen nur global verwenden, wenn Sie globale Daten verwenden möchten, was im Allgemeinen keine gute Idee ist.

In Ihrem Beispiel haben Sie genau das getan. Sie haben Ihren lokalen Parameter mit einer nicht vorhandenen globalen Variable durchbrochen. Entfernen Sie einfach diese Anweisung, und die Dinge sollten funktionieren.

Verwandte Themen