Verwendung von if (! empty) mit mehreren Variablen, die sich nicht in einem Array befinden

8

Ich versuche, Code mit der Funktion if(!empty) in PHP zu polieren, aber ich weiß nicht, wie ich das auf mehrere Variablen anwenden soll, wenn sie kein Array sind (wie ich es vorher tun musste).

%Vor%

Dann möchte ich das Ergebnis nur ausdrucken, wenn es einen Wert gibt. Dies funktioniert für eine Variable, also haben Sie:

%Vor%

Ich habe etwas nach dem Vorbild von

versucht %Vor%

Aber natürlich funktioniert es nicht.

    
HGB 14.02.2011, 14:09
quelle

14 Antworten

26

Sie könnten eine neue Wrapper-Funktion erstellen, die mehrere Argumente akzeptiert und jede durch empty () übergibt. Es würde ähnlich wie isset () funktionieren, wobei true nur dann zurückgegeben wird, wenn alle Argumente leer sind, und false, wenn es das erste nicht leere Argument erreicht. Hier ist, was ich herausgefunden habe, und es hat in meinen Tests funktioniert.

%Vor%

Randnotiz: Das führende "m" in "mempty" steht für "multiple". Sie können es nennen, was Sie wollen, aber das schien der kürzeste / einfachste Weg zu sein, es zu benennen. Außerdem ... es macht Spaß zu sagen. :)

Update 10.10.13: Ich sollte wahrscheinlich hinzufügen, dass im Gegensatz zu empty () oder isset () diese mempty () -Funktion einen blutigen Mord weinen wird, wenn Sie ihr eine undefinierte Variable oder ein non übergeben -existierender Array-Index.

    
imkingdavid 17.10.2011 19:57
quelle
13

Sie müssen eine Konditionskette schreiben. Verwenden Sie && , um mehrere Variablen mit jeweils eigenem empty() test zu testen:

%Vor%

Aber Sie möchten es wahrscheinlich in drei Wenns aufteilen, damit Sie den zusätzlichen Text einzeln anwenden können:

%Vor%     
mario 14.02.2011 14:18
quelle
7

empty() kann nur ein Argument akzeptieren. isset() kann andererseits mehrere akzeptieren; Es wird nur dann true zurückgeben, wenn alle Argumente gesetzt sind. Das überprüft jedoch nur, ob sie gesetzt sind, nicht, wenn sie leer sind. Wenn Sie also leere Zeichenfolgen ausschließen müssen, müssen Sie tun, was kelloti vorschlägt.

    
Andrew 14.02.2011 14:18
quelle
4

verwende boolesche / logische Operatoren:

%Vor%

Vielleicht möchten Sie diese auch mit or anstelle von and verbinden. Wie Sie sehen können, kann dies Ihnen eine gewisse Flexibilität geben.

    
kelloti 14.02.2011 14:15
quelle
3

Speichern Sie sich etwas tippen und in eine Schleife legen ...

%Vor%     
awm 14.02.2011 14:20
quelle
1

Wie bereits erwähnt, benötigt empty() nur ein Argument, also müssen Sie etwas wie

verwenden %Vor%

aber if (!empty($v)) ist dasselbe wie if($v) , also können Sie auch verwenden:

%Vor%     
Eelvex 14.02.2011 14:22
quelle
1

Warum nicht einfach das $ item-Array durchlaufen?

%Vor%

Sie können auch den Schlüsselindexwert validieren

%Vor%

Für das leere () versus isset ()

%Vor%

Ausgabe:

%Vor%     
Phill Pafford 14.02.2011 14:24
quelle
1

Ich benutze diese Funktion als Alternative zu isset. Es ist ein wenig einfacher als das von @ imkingdavid und gibt true zurück, wenn alle Argumente (Variablen) nicht leer sind oder nach dem ersten leeren Wert false zurückgeben.

%Vor%     
hovado 01.06.2016 15:58
quelle
0

Ich bin nicht 100% sicher, dass ich verstehe, was Sie zu tun versuchen, aber hier sind ein paar mögliche Antworten:

Dadurch wird jede Variable nur zurückgegeben, wenn sie nicht leer ist:

%Vor%

Oder dieser fügt alle drei hinzu, wenn keiner leer ist:

%Vor%     
Nathan MacInnes 14.02.2011 14:20
quelle
0
___ qstnhdr ___ Verwendung von if (! empty) mit mehreren Variablen, die sich nicht in einem Array befinden ___ answer4993204 ___

Sie müssen eine Konditionskette schreiben. Verwenden Sie %code% , um mehrere Variablen mit jeweils eigenem %code% test zu testen:

%Vor%

Aber Sie möchten es wahrscheinlich in drei Wenns aufteilen, damit Sie den zusätzlichen Text einzeln anwenden können:

%Vor%     
___ qstntxt ___

Ich versuche, Code mit der Funktion %code% in PHP zu polieren, aber ich weiß nicht, wie ich das auf mehrere Variablen anwenden soll, wenn sie kein Array sind (wie ich es vorher tun musste).

%Vor%

Dann möchte ich das Ergebnis nur ausdrucken, wenn es einen Wert gibt. Dies funktioniert für eine Variable, also haben Sie:

%Vor%

Ich habe etwas nach dem Vorbild von

versucht %Vor%

Aber natürlich funktioniert es nicht.

    
___ answer7798842 ___

Sie könnten eine neue Wrapper-Funktion erstellen, die mehrere Argumente akzeptiert und jede durch empty () übergibt. Es würde ähnlich wie isset () funktionieren, wobei true nur dann zurückgegeben wird, wenn alle Argumente leer sind, und false, wenn es das erste nicht leere Argument erreicht. Hier ist, was ich herausgefunden habe, und es hat in meinen Tests funktioniert.

%Vor%

Randnotiz: Das führende "m" in "mempty" steht für "multiple". Sie können es nennen, was Sie wollen, aber das schien der kürzeste / einfachste Weg zu sein, es zu benennen. Außerdem ... es macht Spaß zu sagen. :)

Update 10.10.13: Ich sollte wahrscheinlich hinzufügen, dass im Gegensatz zu empty () oder isset () diese mempty () -Funktion einen blutigen Mord weinen wird, wenn Sie ihr eine undefinierte Variable oder ein non übergeben -existierender Array-Index.

    
___ answer4993207 ___

%code% kann nur ein Argument akzeptieren. %code% kann andererseits mehrere akzeptieren; Es wird nur dann true zurückgeben, wenn alle Argumente gesetzt sind. Das überprüft jedoch nur, ob sie gesetzt sind, nicht, wenn sie leer sind. Wenn Sie also leere Zeichenfolgen ausschließen müssen, müssen Sie tun, was kelloti vorschlägt.

    
___ answer4993167 ___

verwende boolesche / logische Operatoren:

%Vor%

Vielleicht möchten Sie diese auch mit %code% anstelle von %code% verbinden. Wie Sie sehen können, kann dies Ihnen eine gewisse Flexibilität geben.

    
___ answer4993259 ___

Wie bereits erwähnt, benötigt %code% nur ein Argument, also müssen Sie etwas wie

verwenden %Vor%

aber %code% ist dasselbe wie %code% , also können Sie auch verwenden:

%Vor%     
___ answer4993226 ___

Speichern Sie sich etwas tippen und in eine Schleife legen ...

%Vor%     
___ answer37573583 ___

Ich benutze diese Funktion als Alternative zu isset. Es ist ein wenig einfacher als das von @ imkingdavid und gibt true zurück, wenn alle Argumente (Variablen) nicht leer sind oder nach dem ersten leeren Wert false zurückgeben.

%Vor%     
___ answer4993275 ___

Warum nicht einfach das $ item-Array durchlaufen?

%Vor%

Sie können auch den Schlüsselindexwert validieren

%Vor%

Für das leere () versus isset ()

%Vor%

Ausgabe:

%Vor%     
___ answer4993224 ___

Ich bin nicht 100% sicher, dass ich verstehe, was Sie zu tun versuchen, aber hier sind ein paar mögliche Antworten:

Dadurch wird jede Variable nur zurückgegeben, wenn sie nicht leer ist:

%Vor%

Oder dieser fügt alle drei hinzu, wenn keiner leer ist:

%Vor%     
___ answer44527076 ___

Warum nicht einfach so:

%Vor%     
___ antwort5003299 ___

Jungs, vielen Dank für all eure Antworten, ich habe ein Skript erstellt, das auf all unseren möglichen Antworten basiert, was mir hilft, die Syntax von PHP zu lernen, die die Ursache für die meisten meiner Fehler ist :) Also hier ist es

%Vor%

Ich muss nur herausfinden, wie ich jetzt einige davon anders machen kann. Also könnte ich auf jede auf die folgende Weise zugreifen?

%Vor%

Danke Leute!

    
___ answer45180280 ___

Fügen Sie einfach zum Beitrag von imkingdavid ;

hinzu

Um %code% zurückzugeben, wenn einer der Parameter leer ist, sehen Sie sich stattdessen das folgende an.

%Vor%

Dies ist näher an der Funktionsweise von %code% und ich würde erwarten, dass %code% funktioniert, wenn eine variable Länge von Parametern unterstützt wird. Dies wird auch in Übereinstimmung mit %code% funktionieren, indem %code% zurückgegeben wird, wenn alles nicht leer ist.

  

Wenn mehrere Parameter angegeben werden, gibt iset () nur dann TRUE zurück, wenn alle Parameter gesetzt sind. Die Auswertung geht von links nach rechts und stoppt, sobald eine nicht gesetzte Variable gefunden wird.

PHP: isset - Handbuch

    
___ tag123php ___ PHP ist eine weit verbreitete, dynamische, objektorientierte und interpretierte Skriptsprache, die primär für die serverseitige Webentwicklung entwickelt wurde. ___ tag123isempty ___ Fragen zu Elementen, die als leer oder ohne Datenwert beschrieben werden können ___ answer49096710 ___

Wenn Sie nur mit Zeichenfolgen arbeiten, können Sie Folgendes versuchen:

%Vor%

Beachten Sie, dass leer (0) true zurückgibt, während leer ('0'. '0') und leer ('0') nicht wahr ist.

    
___ answer47331471 ___

Nur für den Rekord: array_reduce funktioniert auch.

%Vor%     
___
HGB 15.02.2011 11:53
quelle
0

Warum nicht einfach so:

%Vor%     
dutch 13.06.2017 16:34
quelle
0

Fügen Sie einfach zum Beitrag von imkingdavid ;

hinzu

Um TRUE zurückzugeben, wenn einer der Parameter leer ist, sehen Sie sich stattdessen das folgende an.

%Vor%

Dies ist näher an der Funktionsweise von isset() und ich würde erwarten, dass empty() funktioniert, wenn eine variable Länge von Parametern unterstützt wird. Dies wird auch in Übereinstimmung mit empty() funktionieren, indem FALSE zurückgegeben wird, wenn alles nicht leer ist.

  

Wenn mehrere Parameter angegeben werden, gibt iset () nur dann TRUE zurück, wenn alle Parameter gesetzt sind. Die Auswertung geht von links nach rechts und stoppt, sobald eine nicht gesetzte Variable gefunden wird.

PHP: isset - Handbuch

    
Dylan 19.07.2017 03:06
quelle
0

Nur für den Rekord: array_reduce funktioniert auch.

%Vor%     
Liam 16.11.2017 13:53
quelle
-1

Wenn Sie nur mit Zeichenfolgen arbeiten, können Sie Folgendes versuchen:

%Vor%

Beachten Sie, dass leer (0) true zurückgibt, während leer ('0'. '0') und leer ('0') nicht wahr ist.

    
lenny 04.03.2018 14:58
quelle

Tags und Links