Antworten auf deine Fragen:
Neues Thema erstellen

Antworten zum Thema „Variablen in function“

mobbytec

Aktives Mitglied

Hallo,
ich würde gern dieses Beispiel zur Berechnung von Feiertagen anpassen: http://wiki.butzhammer.de/Feiertage_über_PHP_ermitteln
Der Teil
PHP:
elseif ($datum[1].$datum[2] == '0106'
       && ($bundesland == 'BW' || $bundesland == 'BY' || $bundesland == 'ST'))
   {
       return 'Heilige Drei Könige';
   }
gibt den Namen des Feiertag aus. Nun möchte ich die Bundesländer in einer Variablen ausgeben (die in einer array vorhanden sind).
Also z.B.
PHP:
$ListeBL = $bundesland['BW] . ', ' . $bundesland['BY];
Außerhalb der Funktion wird mir aber echo $ListeBL nicht angezeigt, mit
PHP:
function feiertag($datum, $ListeBL)
wird mir auch nichts angezeigt.
Könnt ihr da helfen?
 

Myhar

Hat es drauf

Du hast einen Sytnaxfehler in deiner $ListeBL Variable.
Code:
['BW']

Du schließt das zweite ' nicht. Ob dass das Problem behebt weiß ich nicht, aber es ist zumindest ein Anfang. Auch wird hier reichlich wenig Code gezeigt, wo wird die Liste definiert? Wo ist diese überall gültig? Was gibt die feiertage() Funktion überhaupt zurück?
 

mobbytec

Aktives Mitglied

Danke für die Antwort, war ein Tippfehler hier im Forum. Hier mal der gesamte Code:
PHP:
<?php
include 'settings/function.php';

$y = htmlspecialchars($_GET["jahr"]);
$bl = htmlspecialchars($_GET["bl"]);

if (is_int(intval($y))) {
    $jahr = intval($y);
} else {
    $jahr = date($y);
}
$advent1 = date("d.m", strtotime("+1 sunday", mktime(0, 0, 0, 11, 27, $jahr)));
$advent2 = date("d.m.Y", strtotime("+2 sunday", mktime(0, 0, 0, 11, 27, $jahr)));
$advent3 = date("d.m.Y", strtotime("+3 sunday", mktime(0, 0, 0, 11, 27, $jahr)));
$advent4 = date("d.m.Y", strtotime("+4 sunday", mktime(0, 0, 0, 11, 27, $jahr)));

$bl = array(
    'BW' => 'Baden-Württemberg',
    'BY' => 'Bayern',
    'BE' => 'Berlin',
    'BB' => 'Brandenburg',
    'HB' => 'Bremen',
    'HH' => 'Hamburg',
    'HE' => 'Hessen',
    'MV' => 'Mecklenburg-Vorpommern',
    'NI' => 'Niedersachsen',
    'NW' => ' Nordrhein-Westfalen',
    'RP' => 'Rheinland-Pfalz',
    'SL' => 'Saarland',
    'SN' => 'Sachsen',
    'ST' => 'Sachsen-Anhalt',
    'SH' => 'Schleswig-Holstein',
    'TH' => 'Thüringen',
);
?>

<!--Kalender gesamt -->

<?php
setLocale(LC_ALL, "de_DE", "german");
for ($monat = 1; $monat <= 12; $monat++) {
    echo $monat.'<br>';
    for ($tag = 1; $tag <= 31; $tag++) {

        if (checkdate($monat, $tag, date($y))) {
            //https://www.php.net/manual/de/function.strftime.php
            $day = iconv("", "UTF-8", strftime("%d", mktime(0, 0, 0, $monat, $tag, date($y))));
            $mon = iconv("", "UTF-8", strftime("%m", mktime(0, 0, 0, $monat, $tag, date($y))));
            $year = iconv("", "UTF-8", strftime("%Y", mktime(0, 0, 0, $monat, $tag, date($y))));
            $weekday = iconv("", "UTF-8", strftime("%A", mktime(0, 0, 0, $monat, $tag, date($y))));
            $mon_txt = iconv("", "UTF-8", strftime("%B", mktime(0, 0, 0, $monat, $tag, date($y))));
            $date_kurz = $day . '.' . $mon;
            echo $weekday . ', ' . $date_kurz . ' | ';
            echo feiertag($date_kurz) . ' | ';
            echo '<br/>';
        }
    }
    echo '<b>' . ($mon_txt) . '</b><br>';
}
?>

und die Function
PHP:
<?php

function feiertag($date_kurz)
{
   
    $y = htmlspecialchars($_GET["jahr"]);
    $bl = htmlspecialchars($_GET["bl"]);
    if (is_int(intval($y))) {
        $jahr = intval($y);
    } else {
        $jahr = date($y);
    }
    $advent1 = date("d.m", strtotime("+1 sunday", mktime(0, 0, 0, 11, 27, $jahr)));
    $advent2 = date("d.m", strtotime("+2 sunday", mktime(0, 0, 0, 11, 27, $jahr)));
    $advent3 = date("d.m", strtotime("+3 sunday", mktime(0, 0, 0, 11, 27, $jahr)));
    $advent4 = date("d.m", strtotime("+4 sunday", mktime(0, 0, 0, 11, 27, $jahr)));
    $advent4_d = date("d", strtotime("+4 sunday", mktime(0, 0, 0, 11, 27, $jahr)));
    $advent4_m = date("m", strtotime("+4 sunday", mktime(0, 0, 0, 11, 27, $jahr)));

    $day = iconv("", "UTF-8", strftime("%d", mktime(0, 0, 0, $monat, $tag, date($y))));
    $mon = iconv("", "UTF-8", strftime("%m", mktime(0, 0, 0, $monat, $tag, date($y))));
    $monat_t = $day.$mon;

   $xjahr = $y;

   // -------------------------- 
   $yhour    = 0;
   $yminute  = 0;
   $ysecond  = 0;
   $ymonth   = 3;
   
   $abstanday = easter_days($xjahr);  // Abstand der Tage zu 21. März
   
   $ytage = ( 21 + $abstanday ); 
   
   // --- Wenn Ergebnis >= 31 dann umrechnen und im April = Monat 4
   if ($ytage >= 31) { $ytage = ($ytage-31); $ymonth = 4; } 
   
   // ---- timestamp zum Datum erstellen 
   $tmpzeit = mktime($yhour, $yminute, $ysecond, $ymonth, $ytage, $xjahr); 
   $ostersonntag1 = $tmpzeit;
   $easter = date('d.m',$ostersonntag1);
   $easter_d = date('d',$ostersonntag1);
   $easter_m = date('m',$ostersonntag1);



//Feiertage bearbeiten = Liste aller BL
    if ($date_kurz == '01.01') {
        echo 'Neujahr';   
        $ListeBL = $bl['BW'];

    }
    elseif ($date_kurz == '06.01'
        //&& ($bl == 'BW' || $bl == 'BY' || $bl == 'ST')
        )
    {
        echo 'Heilige Drei Könige';
    }
    elseif ($date_kurz == date("d.m",mktime(0,0,0,$easter_m,$easter_d -2,$mon)))
    {
        echo 'Karfreitag';
    }
    elseif ($date_kurz == $easter)
    {
        echo 'Ostersonntag';
    }
    elseif ($date_kurz == $easter+1)
    {
        echo 'Ostermontag';
    }
    elseif ($date_kurz == '01.05')
    {
        echo 'Maifeiertrag';
    }
    elseif ($date_kurz == date("d.m",mktime(0,0,0,$easter_m,$easter_d +39,$mon)))
    {
        echo 'Christi Himmelfahrt';
    }
    elseif ($date_kurz == date("d.m",mktime(0,0,0,$easter_m,$easter_d +49,$mon)))
    {
        echo 'Pfingstsonntag';
    }
    elseif ($date_kurz == date("d.m",mktime(0,0,0,$easter_m,$easter_d +50,$mon)))
    {
        echo 'Pfingstmontag';
    }
    elseif ($date_kurz == ($date_kurz == date("d.m",mktime(0,0,0,$easter_m,$easter_d +60,$mon)))
        //&& ($bl == 'BW' || $bl == 'BY' || $bl == 'HE' || $bl == 'NW' || $bl == 'RP' || $bl == 'SL' || $bl == 'SN' || $bl == 'TH')
        )
    {
        echo 'Fronleichnam';
    }
    elseif ($date_kurz == '15.08'
        //&& ($bl == 'SL' || $bl == 'BY')
        )
    {
        echo 'Mariä Himmelfahrt';
    }
    elseif ($date_kurz == '03.10')
    {
        echo 'Tag der deutschen Einheit';
    }
    elseif ($date_kurz == '31.10'
        //&& (($y >= 2018 && $bl == 'HB') || ($y >= 2018 && $bl == 'HH') || ($y >= 2018 && $bl == 'NI') || ($y >= 2018 && $bl == 'SH')|| $bl == 'BB' || $bl == 'MV' || $bl == 'ST' || $bl == 'TH '|| $bl == 'SN')
        )
    {
        echo 'Reformationstag';
    }
    elseif ($date_kurz == '01.11'
        //&& ($bl == 'BW' || $bl == 'BY' || $bl == 'NW' || $bl == 'RP' || $bl == 'SL')
        )
    {
        echo 'Allerheiligen';
    }
    elseif ($date_kurz == date("d.m",mktime(0,0,0,$advent4_m,$advent4_d -32,$mon))
        //&& ($bl == 'SN')
        )
    {
        echo 'Buß- und Bettag';
    }
    elseif ($date_kurz == '24.12')
    {
        echo 'Heiliger Abend (Bankfeiertag)';
    }
    elseif ($date_kurz == '25.12')
    {
        echo '1. Weihnachtsfeiertag';
    }
    elseif ($date_kurz == '26.12')
    {
        echo '2. Weihnachtsfeiertag';
    }
    elseif ($date_kurz == '31.12')
    {
        echo 'Silvester (Bankfeiertag)';
    }
    elseif ($date_kurz == $advent1)
    {
        echo '1. Advent';
    }
    elseif ($date_kurz == $advent2)
    {
        echo '2. Advent';
    }
    elseif ($date_kurz == $advent3)
    {
        echo '3. Advent';
    }
    elseif ($date_kurz == $advent4)
    {
        echo '4. Advent';
    }

    elseif ($date_kurz == '08.03'
    //&& (($y >= 2019 && $bl == 'BE'))
    )
    {
        echo 'Internationaler Frauentag';
    }

    else
    {
        echo '#';
    }
}

?>
 
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

Neueste Themen & Antworten

Flatrate für Tutorials, Assets, Vorlagen

Zurzeit aktive Besucher

Statistik des Forums

Themen
175.189
Beiträge
2.582.079
Mitglieder
67.258
Neuestes Mitglied
SaschMasch1312
Oben