- 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, 10: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, 11: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 11:36 Uhr)
Mit Zitat antworten
  #3 (permalink)  
Alt 18-03-2017, 15:06
bandit600
 Registrierter Benutzer
Links : Onlinestatus : bandit600 ist offline
Registriert seit: Jan 2010
Beiträge: 79
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, 20: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, 21:28
bandit600
 Registrierter Benutzer
Links : Onlinestatus : bandit600 ist offline
Registriert seit: Jan 2010
Beiträge: 79
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, 05:53
mermshaus
 Registrierter Benutzer
Links : Onlinestatus : mermshaus ist offline
Registriert seit: Jun 2009
Beiträge: 416
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 06: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 17:23
Schreibfehler in Anweisung - Hilfe ? Prominenter HTML, JavaScript, AJAX, jQuery, CSS, Bootstrap, LESS 1 29-10-2007 10:43
hilfe zur if anweisung plz joeCrack PHP Developer Forum 8 15-11-2005 04:00
for schleife funzt nicht mit dem "=" operator in anweisung mit folgener anweisung sc Jointy PHP Developer Forum 4 19-11-2003 14:01
Brauche hilfe zu einer php anweisung.... runner PHP Developer Forum 6 12-10-2002 22: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

PhoneGap Apps mit JS, CSS3 und HTML5 erstellen ansehen PhoneGap Apps mit JS, CSS3 und HTML5 erstellen

PhoneGap, Framework zur Erstellung hybrider Applikationen für mobile Endgeräte.

11.03.2017 Berni | Kategorie: App-Entwicklung
Eventuoso Solo ansehen Eventuoso Solo

Advanced calendar and event management solution with powerful admin backoffice, reliable and robust backend, and outstanding technical support. Manage your events and enrollers easy as 1-2-3, accept payments online or offline, check and print comprehensiv

11.03.2017 tdsystems | Kategorie: PERL/ Kalender
Startseite / Flip Site PHP / MySQL ansehen Startseite / Flip Site PHP / MySQL

Die eigene Startseite Erstellen Sie sich Ihre eigene persönliche Startseite mit Vorschaubilder. Wir bieten Ihnen ein kostenloses komfortables Script in PHP & MySQL für den Aufbau einer eigenen Startseite an. Diese Schnellstartseite oder auch Schnellwah

11.03.2017 nb-m | Kategorie: PHP/ CMS
 Alle PHP Scripte anzeigen

Alle Zeitangaben in WEZ +2. Es ist jetzt 12:05 Uhr.