Ankündigung

Einklappen
Keine Ankündigung bisher.

[Erledigt] Die max - Funktion gibt alle Zahlen wieder, aber nicht die höchste

Einklappen

Neue Werbung 2019

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

  • [Erledigt] Die max - Funktion gibt alle Zahlen wieder, aber nicht die höchste

    Hallo,

    schon seit 2 Tagen versuche ich vergeblich dieses Problem zu lösen.

    Ich habe eine Datei die vom Script abgerufen wird, darin befinden sich 3-4 Zahlen, jeweils mit einem Komma getrennt.

    PHP-Code:
    $dateilesen implode("",file("date.txt")); 
    Inhalt der Datei: 334,624,11,3

    Das klappt soweit auch, nun soll der Befehl max die höchste Zahl ermitteln und anzeigen. Und genau das klappt nicht! Er zeigt dann einfach alle Zahlen inkl. Komma an die er in der Datei findet, aber nicht die höchste Zahl.

    Mein Script dafür:

    PHP-Code:
    $arr = array("$dateilesen");
        
    $max max($arr);
        echo 
    $max
    Ergebnis: 334,624,11,3 (Falsch)

    Wenn ich die Zahlen allerdings manuell rein schreibe, geht es komischerweise!

    PHP-Code:
    $arr = array(334,624,11,3);
        
    $max max($arr);
        echo 
    $max
    Ergebnis: 624 (Richtig)


    Wer kann mir helfen?

  • #2
    Code:
    [...]
    $arr = array("$dateilesen");
    var_dump($arr);
    $arr = array(334,624,11,3);
    var_dump($arr);
    Dir ist scheinbar nicht klar, wie Arrays funktionieren.
    http://php.net/manual/de/language.types.array.php

    Implode: http://php.net/manual/de/function.implode.php
    Explode: http://php.net/manual/de/function.explode.php

    Ein Implode mit Glue "" bringt dir nichts (absolut nichts). Siehe Explode.
    [URL="https://github.com/chrisandchris"]GitHub.com - ChrisAndChris[/URL] - [URL="https://github.com/chrisandchris/symfony-rowmapper"]RowMapper und QueryBuilder für MySQL-Datenbanken[/URL]

    Kommentar


    • #3
      PHP-Code:
      $dateilesen implode("",file("date.txt")); 

      // mach das mal hier und schau
      var_dump($dateilesen); 
      Ja dann mach mal ein var_dump($dateilesen) und schau was drinnen ist und lies die Doku zu file(). file() gibt schon ein Array zurück, mit einem Element je Zeile, das du mit implode dann wieder zu einem String machst und damit den String wieder mit array() in ein Array mit dem ganzen String im ersten Element zu schreiben. "$dateilesen" ist übrigens sinnlos, die Variable $dateilesen kann gut alleine leben.

      Hat deine Datei immer nur eine Zeile? Dann verwendet file_get_contents(), explode(), max() und fertig ist der Dreizeiler.
      The string "()()" is not palindrom but the String "())(" is.

      Debugging: Finde DEINE Fehler selbst! | Gegen Probleme beim E-Mail-Versand | Sicheres Passwort-Hashing | Includes niemals ohne __DIR__
      PHP.de Wissenssammlung | Kein Support per PN

      Kommentar


      • #4
        Habe es eben ausprobiert, auch mit file_get_contents geht es nicht. Selbst wenn ich

        PHP-Code:
        $diezahlen "334,624,11,3" 
        $max max($diezahlen);
            echo 
        $max
        schreibe sehe ich immer alle 4 Zahlen.

        Kommentar


        • #5
          Klar, weil $diezahlen ein String ist und (noch) kein Array -> Grundlagen!

          PHP-Code:
          $diezahlen "334,624,11,3" 
          $arr explode(","$diezahlen); // ein array aus dem String machen
          echo max($arr);

          // Mach mal das und schau dir den Unterschied an:

          var_dump($diezahlen);  // dein String
          var_dump($arr); // das durch explode() erstellte Array 
          LG
          The string "()()" is not palindrom but the String "())(" is.

          Debugging: Finde DEINE Fehler selbst! | Gegen Probleme beim E-Mail-Versand | Sicheres Passwort-Hashing | Includes niemals ohne __DIR__
          PHP.de Wissenssammlung | Kein Support per PN

          Kommentar


          • #6
            Ah klasse! Hat tatsächlich an explode() gelegen.

            Herzlichen Dank für das Beispiel!

            Darauf wäre ich jetzt echt nicht gekommen. Wieder was gelernt.

            Kommentar


            • #7
              Ich wollte dich darauf hinweisen, dachte dann jedoch, dass der Link zum Manual genügt. Wenn du dir das ansehen würdest - was du zweifelsohne nicht hast -, wäre dir das aufgefallen:

              Zitat von php.net
              string implode ( string $glue , array $pieces )
              Zitat von php.net
              array explode ( string $delimiter , string $string [, int $limit ] )
              Fett geschrieben jeweils der Rückgabewert.
              [URL="https://github.com/chrisandchris"]GitHub.com - ChrisAndChris[/URL] - [URL="https://github.com/chrisandchris/symfony-rowmapper"]RowMapper und QueryBuilder für MySQL-Datenbanken[/URL]

              Kommentar

              Lädt...
              X