Ankündigung

Einklappen
Keine Ankündigung bisher.

Frage zu globalen Variablen

Einklappen

Neue Werbung 2019

Einklappen
X
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • Frage zu globalen Variablen

    Liebe Expertinnen und Experten,

    warum führt
    PHP-Code:
        $mitte ""
        global 
    $mitte

        function 
    datenschutz(string $name)
        {    
            
    $eb $name[0];
            
    $laenge strlen($name);
            
    $lb $name[$laenge-1]; 
            
    $diff = ($laenge-2);
            
    //$nvorname = "$eb".(for($z=0;$z<$diff;$z++){echo "x"})."$lb";   
            
    for($z=$z<$diff ;$z++)
            {
    $mitte $mitte."x";}
            return 
    $eb.$mitte.$lb;
            
    //$mitte = ""; 
        

    das zur Fehlermeldung, dass die Variable
    PHP-Code:
    $mitte 
    In der Funktion nicht definiert ist?

    PHP-Code:
    global $mitte
    $mitte ""
    ... führt iÜ zum gleichen Ergebnis.

    Danke Euch

  • #2
    Globale Variablen verwendet man nicht, das führt zu schwer nachvollziehbaren und fehleranfälligen Code. Und das beste Beispiel hast du ja selber geliefert. Ohne die Nutzung von globalen Variablen hättest du dein Problem jetzt gar nicht. Übergib einfach alle Werte, die die Funktion benötigt, als Parameter. Dann ist das vollkommen transparent was da passiert, man hat lesbaren Code und keine bösen Überraschungen.

    Kommentar


    • #3
      Zitat von FF2021 Beitrag anzeigen
      warum führt […] das zur Fehlermeldung, dass die Variable $mitte In der Funktion nicht definiert ist?
      Ein klarer Fall von RTFM. Aber wie hellbringer schon schrieb: vergiss global ganz schnell wieder!

      Dein Code hat allerdings noch ein weiteres Problem: Wenn in $name irgendwo ein Umlaut vorkommt, ist das Ergebnis nicht das was du vermutlich erwartest - verwende die mb-Funktionen.

      Kommentar


      • #4
        Wenn man trotzdem wissen will, wie das Keyword global richtig verwendet wird - es gibt ja auch den Fall, dass man sich mit älterem Code auseinandersetzen muss - kann man das hier nachlesen:
        https://www.php.net/manual/en/langua...bles.scope.php

        global $mitte muss demnach in der Funktion stehen und nicht außerhalb.

        Kommentar


        • #5
          #gelöst. Ich danke Euch.

          Kommentar

          Lädt...
          X