2017-02-23 9 views
-1
function givemeposts($pos, $limit, $offset){ 
... 
} 

givemeposts('slider', 25, 0); 

Die obove arbeitet. Jetzt muss ich die gleiche Funktion, ohne Limit paramAufruf PHP-Funktion ohne ein spezifisches Argument

givemeposts('slider', NULL, 0); 

Fehler:
SQLSTATE[42000]: Syntax error or access violation: 1327 Undeclared variable: offset

Jede Hilfe?

+5

diese Frage muss die 'givemeposts' Umsetzung zu beantworten. –

+0

@ Jeff PuckettII, ist die Implementierung in beiden Fällen gleich. Beim Aufruf der Funktion erscheint ein Fehler. – bonaca

Antwort

1

Definieren der Standard für Limit würde für Sie arbeiten.

function givemeposts($pos, $offset, $limit = null) { 
... 
} 

würde Beide arbeiten:

givemeposts('slider',0, 25); 
givemeposts('slider',0); 
+0

aber nächstes Mal brauche ich '$ Limit' param. Zum Beispiel - 'gibsmosts ('slider', 25, 0);'. Gibt es eine Möglichkeit, dieselbe Funktion aufzurufen? – bonaca

+0

Ja, Sie können die gleiche Funktion verwenden, da der Standardwert definiert ist. Sie müssen den Parameter $ limit nicht bei jedem Aufruf übergeben. Wie Sie sehen können, wurde das $ limit-Argument an das Ende der Liste der Funktionsargumente verschoben. – TopCheese

0

Use default Argumente:

http://php.net/manual/en/functions.arguments.php#functions.arguments.default

function givemeposts($pos, $limit=NULL, $offset=0){ } 

und dann:

givemeposts('slider'); 

oder

givemeposts('slider', 25); 

oder

givemeposts('slider', 25, 0); 

Was Sie nicht tun können, ist Grenze überspringen, indem Sie:

givemeposts('slider', 0); 

weil PHP nicht, soweit ich weiß, die Python-Stil ermöglichen:

givemeposts('slider', offset=0); 
+0

aber nächstes Mal brauche ich '$ Limit' param. Zum Beispiel - 'gibsmosts ('slider', 25, 0);'. Gibt es eine Möglichkeit, dieselbe Funktion aufzurufen? – bonaca

+0

Ja. Dies gibt Ihnen die Möglichkeit, alle Parameter in der Reihenfolge zu belassen, beginnend mit der ersten, die einen Standardwert hat: – manassehkatz

+0

In Ihrem ersten Szenario 'gimemosts ('slider');' gibt mir den gleichen Fehler - 'SQLSTATE [42000]: Syntax error oder Zugriffsverletzung: 1327 Nicht deklarierte Variable: offset' – bonaca

Verwandte Themen