- Ad -
php-resource



Zurück   PHP-Scripte PHP-Tutorials PHP-Jobs und vieles mehr > Entwicklung > PHP Developer Forum
 

Login

 
eingeloggt bleiben
star Jetzt registrieren   star Passwort vergessen
 

 

 

 


PHP Developer Forum Hier habt ihr die Möglichkeit, eure Skriptprobleme mit anderen Anwendern zu diskutieren. Seid so fair und beantwortet auch Fragen von anderen Anwendern. Dieses Forum ist sowohl für ANFÄNGER als auch für PHP-Profis! Fragen zu Laravel, YII oder anderen PHP-Frameworks.

Antwort
 
LinkBack Themen-Optionen Thema bewerten
  #1 (permalink)  
Alt 18-03-2017, 09:04
thommy1972de
 Registrierter Benutzer
Links : Onlinestatus : thommy1972de ist offline
Registriert seit: May 2016
Beiträge: 35
thommy1972de befindet sich auf einem aufstrebenden Ast
Standard Ternäre Anweisung Hilfe...

Ich wollte heute mal Anfangen alle if then else Abfragen auf die Kurzform (Ternär) umzustellen. In diesem Satz ist das Problem dann auch schon integriert.

Nun möchte ich wenn ein Dateiname länger als 0 Zeichen ist ein DIV ausgeben, ansonsten eben nicht.
Nun habe ich:
Code:
if(strlen($row_mail['dateiname']) >= 50) {
		echo "<br><div id='clicking' style='float:right'><button>↓ Klick ↓</button></div>";
		}
der auch funktioniert.
Darauf folgen ergab sich für mich diese Schreibweise (dachte ich):

Code:
echo (strlen($row_mail['dateiname']) >= 50) ? "<br><div id='clicking' style='float:right'><button>↓ Klick ↓</button></div>" : "";
Leider will der nicht so wirklich.

Darauf Fußend ergeben sich für mich 2 Fragen:
Warum geht das nicht ?
und:
Sollte ich das lassen und lieber Fußball spielen gehen ??
Mit Zitat antworten
  #2 (permalink)  
Alt 18-03-2017, 10:30
Benutzerbild von fireweasel fireweasel
 Registrierter Benutzer
Links : Onlinestatus : fireweasel ist offline
Registriert seit: Sep 2008
Ort: At home
Beiträge: 842
fireweasel wird schon bald berühmt werdenfireweasel wird schon bald berühmt werden
fireweasel eine Nachricht über AIM schicken fireweasel eine Nachricht über Yahoo! schicken
Standard

Ich fang mal mit der letzten Frage an:
Zitat:
Zitat von thommy1972de Beitrag anzeigen
Sollte ich das lassen und lieber Fußball spielen gehen ??
Ja.
Anderenfalls wäre es auch hilfreich, wenn du deine Fertigkeiten der deutschen Sprache etwas ausbauen würdest, speziell im Bereich von Groß- und Kleinschreibung.

Zitat:
Zitat von thommy1972de Beitrag anzeigen
Warum geht das nicht?
Weil du die Funktionsweise des "ternären" Operators nicht verstanden hast. Der ist aus Prinzip auf Expressions ("Ausdrücke") beschränkt und tut nicht mit Statements ("Anweisungen"). Im PHP-Wunderland ist echo ein Statement, genauer gesagt: ein Sprachkonstrukt ("language construct"). (Auch wenn die Online-Dokumentation echo verwirrenderweise unter der URL "function.echo.php" führt).

Du kannst daher ?: innerhalb eines Echo-Statements verwenden, aber nicht umgekehrt. Und in der Aussage steckt auch schon die Lösung deines Teil- Problems:
PHP-Code:
echo $bedingung
    
$langer_text_den_niemand_lesen_wird
    
''// einfach ein Leer-String 
Auf dein konkretes Beispiel angewandt:
PHP-Code:
echo strlen($row_mail['dateiname']) >= 50
    
'<br/><div id="clicking" style="float:right"><button>↓ Klick ↓</button></div>'
    
''
Falls dir das nicht gefällt, solltest du dich mit print() und seiner Familie (printf(), vprintf(), sprint(), sprintf(), vsprintf(), ...) bekanntmachen. Die gelten in PHP als Funktionen, sind damit Expressions, und können in ?:-Konstrukte eingebaut werden:
PHP-Code:
strlen($row_mail['dateiname']) >= 50
    
? print('<br/><div id="clicking" style="float:right"><button>↓ Klick ↓</button></div>')
    : 
null// tut gar nichts 
--
Falls das alles zu unverständlich war, hilft vielleicht eine benutzerdefinierte Funktion weiter, die prinzipiell das Gleiche macht wie der Operator:

PHP-Code:
function tOpAlsFunktion(
    
$bedingung// das, was vor dem ? steht 
    
$falls// das was danach, aber vor dem : steht 
    
$fallsNicht // das was nach dem : steht
) {
    if (
$bedingung) {
        return 
$falls;
    }
    else {
        return 
$fallsNicht;
    }

--

Was dich darüberhinaus noch interessieren könnte:
1.) Echo kann mehrere durch Komma getrennte Ausdrücke hintereinander ausgeben.
2.) Man pappt HTML nicht direkt in PHP-Code.
3.) IDs als HTML-Attribute sollten Datei-weit einmalig vergeben werden. Mir deucht, dein id="clicking" sollte eher ein class="clicking" werden.
4.) Und schließlich Grundsätzliches:
Zitat:
Zitat von thommy1972de Beitrag anzeigen
Ich wollte heute mal Anfangen alle if then else Abfragen auf die Kurzform (Ternär) umzustellen.
Warum? Wenn du die Funktionsweise eines if-(elseif-)else-Statements besser verstehst, dann bleib dabei. ?: kann auch nicht mehr. Dafür hat es mehr eingebaute Fallstricke.

Geändert von fireweasel (18-03-2017 um 10:36 Uhr)
Mit Zitat antworten
  #3 (permalink)  
Alt 18-03-2017, 14:06
bandit600
 Registrierter Benutzer
Links : Onlinestatus : bandit600 ist offline
Registriert seit: Jan 2010
Beiträge: 97
bandit600 befindet sich auf einem aufstrebenden Ast
Standard

Das Beispiel vom TE ist völlig sinnbefreit, da es kein else gibt und somit der ternäre Operator Quatsch ist.
Mit Zitat antworten
  #4 (permalink)  
Alt 19-03-2017, 19:33
Benutzerbild von fireweasel fireweasel
 Registrierter Benutzer
Links : Onlinestatus : fireweasel ist offline
Registriert seit: Sep 2008
Ort: At home
Beiträge: 842
fireweasel wird schon bald berühmt werdenfireweasel wird schon bald berühmt werden
fireweasel eine Nachricht über AIM schicken fireweasel eine Nachricht über Yahoo! schicken
Standard

Zitat:
Zitat von bandit600 Beitrag anzeigen
Das Beispiel vom TE ...
Mir fällt gerade auf, dass es so, wie es niedergeschrieben ist, eigentlich funktionieren müsste (von eventuellen Notices wegen nicht existierender Variablen mal abgesehen):
PHP-Code:
echo (strlen($row_mail['dateiname']) >= 50
    ? 
"<br><div id='clicking' style='float:right'><button>↓ Klick ↓</button></div>"
    
""
Da hab ich wohl das echo an der falschen Stelle verortet.
Also liegt der Fehler woanders.

Zitat:
Zitat von bandit600 Beitrag anzeigen
... ist völlig sinnbefreit, da es kein else gibt und somit der ternäre Operator Quatsch ist.
Es gibt einen "else"-Zweig. Der liefert einen Leer-String, den echo in den Ausgabekanal schreibt. Das mag (dir) unnötig erscheinen, ist aber weder sinnbefreit noch Quatsch. Allerdings macht es, an dieser Stelle eingesetzt, den Quelltext schwerer lesbar als eine If-Konstruktion.

Auf den Umstand, dass man nicht zwanghaft jedes If-Else-Statement auf die Operatorschreibweise umstellen sollte, hatte ich hingewiesen.
Mit Zitat antworten
  #5 (permalink)  
Alt 19-03-2017, 20:28
bandit600
 Registrierter Benutzer
Links : Onlinestatus : bandit600 ist offline
Registriert seit: Jan 2010
Beiträge: 97
bandit600 befindet sich auf einem aufstrebenden Ast
Standard

Zitat:
Zitat von fireweasel Beitrag anzeigen
Das mag (dir) unnötig erscheinen, ist aber weder sinnbefreit noch Quatsch.
Soso, dann kannst du mir ja bestimmt den Sinn von

PHP-Code:
echo ""
erklären, ich sehe nämlich keinen darin
Mit Zitat antworten
  #6 (permalink)  
Alt 20-03-2017, 04:53
Benutzerbild von mermshaus mermshaus
 Registrierter Benutzer
Links : Onlinestatus : mermshaus ist offline
Registriert seit: Jun 2009
Beiträge: 432
mermshaus wird schon bald berühmt werden
Standard

Ein klassisches Beispiel für ein „leeres echo“ wäre so was:

PHP-Code:
<?php
$classStr 
= ($element['isActive']) ? ' class="active"' '';
?>
<div<?=$classStr?>>...</div>
Beziehungsweise ganz exakt so:

PHP-Code:
<div<?php echo ($element['isActive']) ? ' class="active"' ''?>>...</div>
Die Alternative würde zum Beispiel so aussehen:

PHP-Code:
<?php
$classStr 
'';
if (
$element['isActive']) {
    
$classStr ' class="active"';
}
?>
<div<?=$classStr?>>...</div>
Ein potenzieller Gewinn in Sachen Verständlichkeit/Lesbarkeit ist vielleicht etwas situativ, aber das gilt in gewisser Weise auch für andere Operatoren. Auch jede Verknüpfung von &&-Ausdrücken ließe sich etwa mit geschachtelten if-Anweisungen schreiben.

Ist letztlich irgendwie auch eine Stilfrage. *hilflose Armbewegung*

Geändert von mermshaus (20-03-2017 um 05:19 Uhr)
Mit Zitat antworten
Antwort

Lesezeichen


Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1)
 

Ähnliche Themen
Thema Autor Forum Antworten Letzter Beitrag
Dringende Hilfe if/else Anweisung fearless111 Projekthilfe 1 13-06-2012 16:23
Schreibfehler in Anweisung - Hilfe ? Prominenter HTML, JavaScript, AJAX, jQuery, CSS, Bootstrap, LESS 1 29-10-2007 09:43
hilfe zur if anweisung plz joeCrack PHP Developer Forum 8 15-11-2005 03:00
for schleife funzt nicht mit dem "=" operator in anweisung mit folgener anweisung sc Jointy PHP Developer Forum 4 19-11-2003 13:01
Brauche hilfe zu einer php anweisung.... runner PHP Developer Forum 6 12-10-2002 21:27

Themen-Optionen
Thema bewerten
Thema bewerten:

Forumregeln
Es ist Ihnen nicht erlaubt, neue Themen zu verfassen.
Es ist Ihnen nicht erlaubt, auf Beiträge zu antworten.
Es ist Ihnen nicht erlaubt, Anhänge hochzuladen.
Es ist Ihnen nicht erlaubt, Ihre Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are an


PHP News

Multi-Branchen-Marktplatzsoftware 7.2.2 veröffentlicht
Multi-Branchen-Marktplatzsoftware 7.2.2 veröffentlichtDie Software ebiz-trader steht in der Version 7.2.2 zur Verfügung.

28.10.2016 | Berni

Zeit ist Geld, PC einfach selbst reparieren!
Zeit ist Geld, PC einfach selbst reparieren!Wenn der PC nicht richtig läuft, wirft sie das in Ihrem Arbeitsalltag meist zurück. Dabei können Sie einige Probleme mit relativ wenig Aufwand und ohne intime Kenntnisse Ihres Rechners selbst lösene

18.04.2016 | Berni


 

Aktuelle PHP Scripte

Download-Zähler

Dieses Script zählt für euch die Downloads und trägt diese in einer Datenbank ein.

20.04.2017 daproc | Kategorie: PHP/ Datei Download
Belegungsplan 0.4 ansehen Belegungsplan 0.4

Dieses Script zeigt auf Ihrer Webseite einen Kalender an, auf dem die Belegung Ihrer Ferienwohnung oder ihres Ferienhauses sichtbar ist.

20.04.2017 daproc | Kategorie: PHP/ Kalender
ebiz-trader 6.0 - Das professionelle PHP Marktplatz Script ansehen ebiz-trader 6.0 - Das professionelle PHP Marktplatz Script

Mit unserer Lösungen können Sie nahezu jeden B2B / B2C Marktplatz betreiben den Sie sich vorstellen können. Ganz egal ob Sie einen Automarktplatz, Immobilenportal oder einfach einen Anzeigenmarkt betreiben möchten. Mit ebiz-trader können Sie Ihre Anforder

10.04.2017 Berni | Kategorie: PHP/ Anzeigenmarkt
 Alle PHP Scripte anzeigen

Alle Zeitangaben in WEZ +2. Es ist jetzt 23:30 Uhr.