Ankündigung

Einklappen
Keine Ankündigung bisher.

[Erledigt] Array innerhalb einer Funktion

Einklappen

Neue Werbung 2019

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

  • [Erledigt] Array innerhalb einer Funktion

    Halloechen zusammen!

    Hab ein "kleines" Problem hier und habe atm nicht so recht ne Idee, was falsch laeuft. Entweder seh ich den Wald vor lauter Baeumen nicht mehr oder ich bin zu bloed (will ich ja nich ausschließen ) . Mein Wissen in Bezug auf PHP haelt sich doch noch stark und Grenzen.

    Im Moment versuche ich gerade eine eigene Funktion zu erstellen, in welcher ein Array gefuellt werden soll. Sinn der Funktion ist es, einen Timestamp aus einer Datenbank auszulesen und so umzuwandeln, dass 2 Variablen (Datumsangabe und Zeit) genutzt werden koennen. Irgendwie scheint da aber was nicht zu stimmen. Hab mir jetzt schon zig Seiten angeschaut, aber irgendwie will es nicht.

    Zunaechst hatte ich 2 einzelne Funktionen fuer die Bearbeitung des Timestamps erzeugt. Die haben auch soweit funktioniert.

    PHP-Code:
    function datum($timestamp) {
        
    $datum date("d.m.Y"$timestamp);
        return 
    $datum;
        }
        
        function 
    zeit($timestamp) {
        
    $zeit date("H:i"$timestamp);
        return 
    $zeit;
        } 
    Aufgerufen hab ich das ganze dann in einer anderen php-Datei mit:

    PHP-Code:
    $timestamp $row["timestamp"]; //Kommt aus ner Datenbankabfrage

    $datum datum($timestamp);
    $zeit zeit($timestamp);

    echo 
    $datum;
    echo 
    $zeit
    Vermutlich nicht die eleganteste Loesung, aber immerhin hat es funktionert. Datenbankverbindung existiert und das Auslesen klappt auch. Nun habe ich mir gedacht, dass ich das Ganze auch in 1 Funktion bauen koennte. Aber da waren wieder meine 3 Probleme... oder so aehnlich.


    Die neue Funktion lautet:
    PHP-Code:
    function datumsangabe($timestamp) {
            
    $datum date("d.m.Y"$timestamp);
            
    $zeit date("H:i"$timestamp);
            
    $timestamp_zerlegen = array("datum"=>$datum"zeit"=>$zeit);
            return array(
    $timestamp_zerlegen);
        }

    //Aufruf in ner andere Datei dann ueber:
    $test datumsangabe($timestamp);
    echo 
    $test["datum"];
    echo 
    $test["zeit"]; 
    Hmm aber das will nich so wie ich will. Scheinbar wird das Array nicht richtig uebergeben oder auch gar nicht erst richtig in der Funktion gefuellt. Wie gesagt halten sich meine PHP-Kenntnisse in Grenzen und ich finde den Fehler einfach nicht.

    Bin mir sicher , dass die Profis hier sicher schnell fuendig werden. Danke schonmal fuer eventuelle Ratschlaege.

  • #2
    Hallo Marko,

    mach einfach mal ein print_r($test); nach dem Funktionsaufruf und du siehst was falsch läuft. (Tipp: In deiner Funktion hast du in $timestamp_zerlegen bereits ein array, dieses fügst du dann vor dem zurückeben nochmal in ein array ein, warum?)
    [URL="https://www.quizshow.io/"]Create your own quiz show.[/URL]

    Kommentar


    • #3
      Zitat von agrajag Beitrag anzeigen
      Hallo Marko,

      mach einfach mal ein print_r($test); nach dem Funktionsaufruf und du siehst was falsch läuft.
      Hab das print_r($test) ausgefuehrt und erhalte daraufhin eine mehr oder weniger unverstaendliche Antwort bzw bin ich nicht ganz sicher , was sie bedeutet. Array ([0] => Array ([datum] => 01.03.2004 [zeit] => 23:11)) Wenn ich raten muesste, wuerde ich sagen, dass es an deinem Tipp liegt, der sich wohl auf:
      PHP-Code:
      $timestamp_zerlegen = array("datum"=>$datum"zeit"=>$zeit); 
      bezieht. Quasi ein Array in einem Array... Die Idee war eigentlich, dass ich die einzelnen Felder mit Namen ansprechen kann. Statt eines mehr oder weniger unuebersichtlichem $test[0] dann halt
      PHP-Code:
      $test["datum"]; 
      . Aber irgendwie scheint da auch der Fehler zu liegen...

      Kommentar


      • #4
        Hallo Marco,
        in der Variable "$timestamp_zerlegen" stellst Du dir Dein erstes Array zusammen, soweit ganz richtig,

        aber warum Packst Du das Array "$timestamp_zerlegen" nochmal in ein Array?

        hier:
        PHP-Code:
        return array($timestamp_zerlegen); 
        Versuchs mal so:
        PHP-Code:
        return($timestamp_zerlegen); 
        und dann:

        PHP-Code:
        $datum $timestamp_zerlegen['datum'];
        $zeit    $timestamp_zerlegen['zeit']; 
        V.G.
        Frank
        Mein Projekt: www.my-matrix.de

        Kommentar


        • #5
          Ok, danke an euch 2. Hab das Problem mit eurer Hilfe beheben koennen. Der Fehler lag in der Tat beim Array im Array. Bin halt davon ausgegangen, dass return array(...); ne allgemeine Schreibweise zum Zurueckgeben eines Arrays ist und nicht, dass man damit nochmal ein neues Array erzeugt, bevor das return erfolgt. Jetzt funktioniert alles so, wie ich es mir vorgestellt habe. Bin zwar noch immer nich sicher, ob es da nich bessere Moeglichkeiten gibt, aber immerhin hab ich schonmal ein Erfolgserlebnis.

          Andere Frage noch am Rand, bevor ich die in nem anderen Thread stelle: Wenn man per Formular eine Suchanfrage realisieren moechte, die einen gewissen zeitlichen Rahmen abdecken soll (sprich nur Eintraege zurueckliefern, die in dem ausgewaehlten Zeitraum liegen), ist dann eine Verwendung von Timestamps sinnvoll oder gibts da Alternativen? Timestamps muss man halt in ne Form bringen, damit man die mit nem Datum bzw andersrum vergleichen kann.

          Kommentar


          • #6
            Also mit time() kann man eine ganze Menge "Unfug" machen, Ich persönlich arbeite nur damit, denn in der Ausgabe hat man Formatierungstechnisch alle Möglichkeiten offen und man kann ggf auch besser rechnen wenn man es muss

            Und wenn Du eine Abfrage machen möchtest die einen zeitlichen Rahmen abdecken soll, kommst du um das Rechnen nicht herrum.

            V.G.
            Frank
            Mein Projekt: www.my-matrix.de

            Kommentar


            • #7
              ist dann eine Verwendung von Timestamps sinnvoll oder gibts da Alternativen? Timestamps muss man halt in ne Form bringen, damit man die mit nem Datum bzw andersrum vergleichen kann.
              In der DB auf jeden Fall, im Form natürluich nicht. Schnittstelle kann bspw. PHP mit [MAN]strtotime[/MAN] sein.
              [COLOR="#F5F5FF"]--[/COLOR]
              [COLOR="Gray"][SIZE="6"][FONT="Georgia"][B]^^ O.O[/B][/FONT] [/SIZE]
              „Emoticons machen einen Beitrag etwas freundlicher. Deine wirken zwar fachlich richtig sein, aber meist ziemlich uninteressant.
              [URL="http://www.php.de/javascript-ajax-und-mehr/107400-draggable-sorttable-setattribute.html#post788799"][B]Wenn man nur Text sieht, haben viele junge Entwickler keine interesse, diese stumpfen Texte zu lesen.“[/B][/URL][/COLOR]
              [COLOR="#F5F5FF"]
              --[/COLOR]

              Kommentar


              • #8
                @nikosch: kann sein das es jetzt abschweift, aber "strtotime()" vom String 2.12.2009 , liefert mir doch den timpstamp vom 2.12.2009 0:00 Uhr oder?

                Wenn man eine Berechnung machen möchte wäre diese ja denn dann nur auf den Tag genau ?
                Die Frage ist nur zu meinem Verständnis.
                Mein Projekt: www.my-matrix.de

                Kommentar


                • #9
                  Kommt auf die Eingabe drauf an. Zeit ist ebenfalls möglich.
                  [COLOR="#F5F5FF"]--[/COLOR]
                  [COLOR="Gray"][SIZE="6"][FONT="Georgia"][B]^^ O.O[/B][/FONT] [/SIZE]
                  „Emoticons machen einen Beitrag etwas freundlicher. Deine wirken zwar fachlich richtig sein, aber meist ziemlich uninteressant.
                  [URL="http://www.php.de/javascript-ajax-und-mehr/107400-draggable-sorttable-setattribute.html#post788799"][B]Wenn man nur Text sieht, haben viele junge Entwickler keine interesse, diese stumpfen Texte zu lesen.“[/B][/URL][/COLOR]
                  [COLOR="#F5F5FF"]
                  --[/COLOR]

                  Kommentar

                  Lädt...
                  X