- 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: 843
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: 127
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: 843
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: 127
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
Benutzerbild von mermshaus mermshaus
 Registrierter Benutzer
Links : Onlinestatus : mermshaus ist offline
Registriert seit: Jun 2009
Beiträge: 449
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

Mit Web-Templates Geld verdienen
Mit Web-Templates Geld verdienenWeb-Templates gewinnen immer mehr an Bedeutung. Erfahre hier, wie du dir mit dem TemplateMonster-Marktplatz neue Verkaufswege erschließen kannst.

17.10.2017 | Berni

Kostenloser PHP Editor Codelobster
Kostenloser PHP Editor CodelobsterEin einfach zu verwendender PHP, HTML, CSS, JavaScript Editor mit vielen Funktionen

21.09.2017 | Berni


 

Aktuelle PHP Scripte

PHP Newsletter Script SuperWebMailer ansehen PHP Newsletter Script SuperWebMailer

Die webbasierte PHP Newsletter Software SuperWebMailer ist die optimale Lösung zur Durchführung eines erfolgreichen E-Mail-Marketings. Zur Nutzung des PHP Script-Pakets ist eine eigene Webpräsenz/Server mit PHP 4 oder neuer, MySQL 3.23 oder neuer und die

17.11.2017 mirko_swm | Kategorie: PHP/ Mail
belbit Ticketcenter ansehen belbit Ticketcenter

Supportanfragen per Helpdesk über E-Mail und per Kontaktformular entgegennehmen. Inkl. iPhone- und Android App zum mobilen Beantworten von Anfragen.

14.11.2017 EichbaumMedia | Kategorie: PHP/ Ticketsystem
PHP Counter Script V1.0 ansehen PHP Counter Script V1.0

Ein ganz einfach einzubauender Besucherzähler. Kostenlos und ohne Werbung für private und gewerbliche Webseiten!

14.11.2017 hinnendahl_com | Kategorie: PHP/ Counter
 Alle PHP Scripte anzeigen

Alle Zeitangaben in WEZ +2. Es ist jetzt 11:41 Uhr.