PHP Schnipsel für Website IF

Hallo,
ich habe für meine Website einen PHP Code geschrieben, damit sich das Design zur Weihnachtszeit etwas verändert(Z.b. das Logo bekommt eine Zipfelmütze,…)!
Nun wollte ich aber das dieses Design auch noch im Januar aktiv ist.

Hier mal mein momentanes Script.

<?php $seasondate = date("m");
$seasonmonth = "12"; if($seasondate == $seasonmonth) { $seasonout = winter; } ?\> Wer kann mir helfen den ich steh grad sowas von aufm Schlauch! Mit freundlichen Grüßen Bastian Dufner PS: Es ist mir zwar bekannt das es auch mit CSS ginge aber für meine Zwecke nicht geeignet!

Hallo Bastian,

$seasondate = date("m");
$december = "12";
$januar = "1";

if($seasondate == $december || $seasondate == $januar){
 $seasonout = winter;
}

oder…

$seasondate = date("m");
$array = array("1","12");

if(in\_array($seasondate,$array)){
 $seasonout = winter;
}

Gruß XXD

Hi,

$seasondate = date(„m“);
$december = „12“;
$januar = „1“;

if($seasondate == $december || $seasondate == $januar){
$seasonout = winter;
}

das finde ich sehr unsauber, da date(„m“) einen String mit führender 0 zurück gibt und eine Konstante „winter“ vermutlich auch nicht definiert ist. Ferner wissen wir gar nicht, ob auf die Variable $seasonout zugegriffen wird auch wenn sie nicht gesetzt ist.

Außerdem muss man das doch gar nicht so umständlich programmieren.
Um den kalendarischen Winter dieser Variablen zuzuweisen reicht:

$seasonout = (date("m")=='12' || date("m")
Gruß
Ingo
1 Like

Hey,

ich würde auf jedem fall dies bevorzugen:

$seasondate = date(" n");
$december = „12“;
$januar = „1“;

if($seasondate == $december || $seasondate == $januar){
$seasonout = winter;
}

in_array ist eine ziemliche Performancebremse in PHP.

$seasondate = date(" n");
$array = array(„1“,„12“);

if(in_array($seasondate,$array)){
$seasonout = winter;
}

Gruß XXD

Gruß
Phillip

Hallo

in_array ist eine ziemliche Performancebremse in PHP.

ja lol,
bei einem Array mit 2 Einträgen denkst du an Perfomance lol

Aber Hauptsache man hat mal irgendwo was gelesen .

selbst bei 2 elementen im Array ist der die in_array Version schon um den Faktor 10 langsamer als ein Vergleich mit einem if

macht vielleicht bei diesem Projekt nicht viel aus, jedoch bleiben die antworten hier bis zum tot von w-w-w stehen und daher finde ich es nicht falsch solche informationen mit zu geben.

Gruß

Hallo Phillip,

selbst bei 2 elementen im Array ist der die in_array Version
schon um den Faktor 10 langsamer als ein Vergleich mit einem
if

Wie kommst du denn zu dem Faktor 10? Das in_array auf kleine Arrays theoretisch langsamer ist, dagegen kein Wiederspruch jedoch liegen die Unterschiede im Mikrosekunden-Bereich und zwar 6 Stellen hinter dem Komma (bei 10 Elementen im Array). Steigt die Länge des Arrays auf z.B. 1000 oder 10000 ist in_array durchaus unperformant, jedoch wenn man so große Arrays hat, hat man vermutlich prinzipiell was verkehrt gemacht.

Warum macht es evtl. Sinn in_array zu benutzen? Bleiben wir bei den 10 Elementen und gehen davon aus, es handle sich nicht um fortlaufende Monate (dafür hatte ja Ingo schon eine elegande Lösung gepostet). Wie sehe der Code nun mit 10 Oder-Verknüpfungen aus? Während in_array immer noch der unveränderte Code wäre.

Wie du siehst liegt es in der Entscheidung des Entwicklers, zu entscheiden wann er was benutzt und wann er es besser bleiben lässt. Selbst bei 50 Einträgen ist die Performance kaum messbar, der Code aber besser lesbar. Und ehrlich gesagt, kann ich mich nicht daran erinnern, jemals ein Array > 50 gehabt zu haben, da ich allgemein versuche die Last der Datenbank gering zu halten und meist nicht mehr als 20-50 Objekte auf einmal auszulesen.

Am Ende ist immer die Datenbank die Performancebremse, da kann man noch so pedantisch php programmieren.

Gruß XXD