Antworten auf deine Fragen:
Neues Thema erstellen

In PHP Array rechnen

SWFP

SWFP Mitglied

Hi,

ich habe nun folgendes Problem:

Mein Array + Scripte sieht folgendermaßen aus:

PHP:
<?php

$year = date("Y");
$easterDate  = easter_date($year);
$easterDay   = date('j', $easterDate);
$easterMonth = date('m', $easterDate);
$easterYear   = date('Y', $easterDate);
$Ostern = $easterDay.".".$easterMonth.".";

$Feiertage = array("01.01."=>"Neujahr",
...
"31.12."=>""
);

$Feiertage[$Ostern]="Ostersonntag";
$Feiertage[$Ostern+1]="Ostermontag";

Ostersonntag krieg ich da ja noch rein. Also, weil das Datum für Ostern sich ja jedes Jahr ändert, muss ich es mit der Funktion
Code:
easter_date()
berechnen. Das muss ich dann später noch in das Array kriegen. Der Sonntag ist kein Problem, wie man weiter unten sieht, aber der Versuch den Ostermontag zu bestimmen, also eine Zeile darunter, schlug fehl. Auch, wenn ich
PHP:
mktime(0, 0, 0, easterDate("m")  , easterDate("d")+1, easterDate("Y"));
verwende, kommt da nichts gutes bei raus. Was mache ich falsch?

MfG
 

Duddle

Posting-Frequenz: 14µHz

AW: In PHP Array rechnen

Du verwechselst hier wild Variablen und Funktionen, sowie Typen.
PHP:
$Feiertage[$Ostern+1]="Ostermontag";
$Ostern ist in deinem Code ein String. Ein String ist eine Zeichenkette, also zum Beispiel "Wolkenkratzer". Du willst nun, übertragen gesagt, "Wolkenkratzer" + 1 berechnen. Was ist das korrekte Ergebnis dafür? Genau, es hat mathematisch wenig Sinn.
Wenn du Daten verrechnen willst, bietet es sich immer an einen Timestamp, also einen Zahlenwert, zu benutzen. Interessanterweise hast du genau den in $easterDate stecken, darum verstehe ich in keinster Weise warum du damit nicht arbeitest.

Dein zweiter Ausschnitt ist noch seltsamer. Du benutzt easterDate() als Funktion, hast aber vorher nur $easterDate als Variable und easter_date() als Funktion erwähnt, wobei letzteres ein Jahr als Parameter erwartet und keinen String wie dort benutzt.

Werd dir also klar, was du eigentlich zur Verfügung hast. Dann kombiniere diese Bausteine ordentlich und schon hast du dein Ziel erreicht.


Duddle
 

KaisyTom

Aktives Mitglied

AW: In PHP Array rechnen

Warum so kompliziert?

PHP:
<?php
$year = date("Y"); 
$Feiertage = array("01.01."=>"Neujahr", ..., "31.12."=>"Sylvester"); 

$Feiertage[date("d.m.", easter_date($year))]="Ostersonntag";
//Array-key ist der String in form: "DD.MM." am osterdatum des jahres $year

$Feiertage[date("d.m.", easter_date($year)+(60*60*24)]="Ostermontag";
//Array-key ist der String in form: "DD.MM." am Osterdatum + 1Tag (60sec*60min*24h) des Jahres $year
?>
Deine Fehler hat Duddel ja schon erörtert.

Gruß Tom
 
Zuletzt bearbeitet:

SWFP

SWFP Mitglied

AW: In PHP Array rechnen

Ah, okay, danke. Das Problem ist jetzt fast gelöst. ICh kriege hier
PHP:
$Feiertage[date("d.m.", easter_date($year)+(60*60*24)]="Ostermontag";
immer folgenden Fehler:
Code:
Parse error: syntax error, unexpected ']' in /users/bunte-ecke/www/Bunte Ecke/Test-Ecke/Dashboard-Paket/feiertage.php on line 386

und hier
PHP:
$Feiertage[date("d.m.", easter_date($year))]="Ostersonntag";
folgenden Fehler:
Code:
Warning: easter_date() [function.easter-date]: This function is only valid for years between 1970 and 2037 inclusive in /users/bunte-ecke/www/Bunte Ecke/Test-Ecke/Dashboard-Paket/feiertage.php on line 383

Warum?

Dann möchte ich noch folgendes:
ich möchte für den heutigen Tag den Inhalt des Arrays ausgeben lassen. So komme ich aber nicht weiter:
PHP:
echo $Feiertage[date("m.d")];
bzw.
PHP:
echo $Feiertage[$heute];
Was ist daran falsch? Ich habe auch schon das heute in Anführungszeichen gesetzt, da das ja im Array auch so ist, aber ohne Erfolg.
 

Duddle

Posting-Frequenz: 14µHz

AW: In PHP Array rechnen

Im ersten Auszug fehlt eine schließende Klammer. Im zweiten Auszug ist entweder $year nicht oder falsch (nicht zwischen 1970 und 2037 wie von der Funktion gewünscht) gesetzt. Im dritten Auszug hast du plötzlich das Format "m.d", obwohl du vorher exklusiv "d.m." nutzt und im vierten hast du dann wahrscheinlich auch $heute falsch formatiert.


Duddle
 

KaisyTom

Aktives Mitglied

AW: In PHP Array rechnen

PHP:
//statt:
$Feiertage[date("d.m.", easter_date($year)+(60*60*24)]="Ostermontag";
//das hier:
$Feiertage[date("d.m.", easter_date($year)+(60*60*24))]="Ostermontag";


PHP:
//versuche mal:
$Feiertage[date("d.m.", easter_date(intval($year)))]="Ostersonntag";
//geht das nicht, dann lass dir vorher $year ausgeben und sieh einfach ob's ein valider Wert ist.

PHP:
//statt
echo $Feiertage[date("m.d")];
//das hier:
echo $Feiertage[date("d.m.")];
//schau dir das Format in dem du abspeicherst besser an ;)
 
Bilder bitte hier hochladen und danach über das Bild-Icon (Direktlink vorher kopieren) platzieren.
Antworten auf deine Fragen:
Neues Thema erstellen

Willkommen auf PSD-Tutorials.de

In unseren Foren vernetzt du dich mit anderen Personen, um dich rund um die Themen Fotografie, Grafik, Gestaltung, Bildbearbeitung und 3D auszutauschen. Außerdem schalten wir für dich regelmäßig kostenlose Inhalte frei. Liebe Grüße senden dir die PSD-Gründer Stefan und Matthias Petri aus Waren an der Müritz. Hier erfährst du mehr über uns.

Stefan und Matthias Petri von PSD-Tutorials.de

Nächster neuer Gratisinhalt

03
Stunden
:
:
25
Minuten
:
:
19
Sekunden

Flatrate für Tutorials, Assets, Vorlagen

Zurzeit aktive Besucher

Statistik des Forums

Themen
118.611
Beiträge
1.538.341
Mitglieder
67.524
Neuestes Mitglied
BSKGA
Oben