Ankündigung

Einklappen
Keine Ankündigung bisher.

Grösster Wert eines Arrays mit negativen Zahlen herausfinden

Einklappen

Neue Werbung 2019

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

  • Grösster Wert eines Arrays mit negativen Zahlen herausfinden

    Hallo zusammen

    Ich möchte gerne die grösste Zahl eines Arrays mit negativen Zahlen (kann auch positive Zahlen enthalten) herausfinden. Wenn der Array auch positive Zahlen enthält, funktioniert es mit der Funktion max(). Enthält der Array aber nur negative Zahlen gibt die Funktion max() eine Fehlermeldung aus und zwar:
    Warning: Wrong parameter count for max()
    Wie kann ich die grösste Zahl eines Arrays mit NUR negativen Zahlen bestimmen? Ich hoffe jemand kann mir helfen! Danke!

  • #2
    Zitat von beta02 Beitrag anzeigen
    Enthält der Array aber nur negative Zahlen gibt die Funktion max() eine Fehlermeldung aus und zwar:
    Warning: Wrong parameter count for max()
    Vollkommener Quatsch.
    Das funktioniert problemlos, und außerdem ist die Meldung auch vollkommen unsinnig, wenn du max nach wie vor ein Array als Parameter übergibst.
    Schlussfolgerung: Du machst irgendwas anderes, verrätst uns aber dummerweise nicht, was.

    Wie kann ich die grösste Zahl eines Arrays mit NUR negativen Zahlen bestimmen?
    In dem du es einfach richtig machst.
    Was du derzeit falsch machst, kann ich dir nicht sagen, weil du keinen Code zeigst.
    [SIZE="1"]RGB is totally confusing - I mean, at least #C0FFEE should be brown, right?[/SIZE]

    Kommentar


    • #3
      Zitat von beta02 Beitrag anzeigen
      Hallo zusammen

      Ich möchte gerne die grösste Zahl eines Arrays mit negativen Zahlen (kann auch positive Zahlen enthalten) herausfinden. Wenn der Array auch positive Zahlen enthält, funktioniert es mit der Funktion max(). Enthält der Array aber nur negative Zahlen gibt die Funktion max() eine Fehlermeldung aus und zwar:

      Warning: Wrong parameter count for max()
      Wenn man nach (exakt) dieser Fehlermeldung für max() oder min() googelt, erhält man zwar ein paar Treffer, aber keinen in der PHP-Bug-Datenbank. Außerdem waren alle Fundstellen von 2007 oder älter. Mit keinem der dort gefundenen Fehlermuster konnte ich max() auf einem halbwegs aktuellen PHP (5.3.2) die gleiche Fehlermeldung entlocken.

      Wie kann ich die grösste Zahl eines Arrays mit NUR negativen Zahlen bestimmen? Ich hoffe jemand kann mir helfen! Danke!
      Man kann das neben max() auch mit einer Schleife oder array_reduce() und ein wenig Mathematik (Grundschulkenntnisse) machen.
      Wenn man die Wurst schräg anschneidet, hält sie länger, weil die Scheiben größer sind.

      Kommentar


      • #4
        Bevor man sich durch Schleifen quält, kann man auch mit sort, sortieren und je nach Ordnung das erste oder letzte Element wählen. Ist zwar langsamer als max() aber besser als nix.
        PHP online testen, zum Beispiel: md5, base64_decode, preg_match, urldecode und viele weitere...

        Kommentar


        • #5
          Zitat von jabubo Beitrag anzeigen
          Bevor man sich durch Schleifen quält, kann man auch mit sort, sortieren und je nach Ordnung das erste oder letzte Element wählen. Ist zwar langsamer als max() ...
          ... und langsamer als mit einer Schleife den Minimal- oder Maximal-Wert zu finden.
          Auch ist die "Sortierung" eines Arrays nach Wert-Größe nicht immer gewünscht.
          Wenn man die Wurst schräg anschneidet, hält sie länger, weil die Scheiben größer sind.

          Kommentar


          • #6
            Zitat von fireweasel Beitrag anzeigen
            ... und langsamer als mit einer Schleife den Minimal- oder Maximal-Wert zu finden.
            Auch ist die "Sortierung" eines Arrays nach Wert-Größe nicht immer gewünscht.
            Theoretisch. Kommt halt auf den Fundort an. Die Sortfunktion ist immerhin in C gelöst und die Schleife in PHP ... Generell und von der Logik her, aber durchaus richtig, lieber eine Schleife als Sortierung.
            PHP online testen, zum Beispiel: md5, base64_decode, preg_match, urldecode und viele weitere...

            Kommentar


            • #7
              PHP-Code:
              $min $max 0;
              $werte = array(-4, -, -);
              foreach(
              $werte as $wert) {
                if ( 
              $wert $min $min $wert;
                if ( 
              $wert $max $max $wert;
              }
              echo 
              "Min: $min - Max = $max"
              [PHP]if ($var != 0) {
              $var = 0;
              }[/PHP]

              Kommentar


              • #8
                @Wolla: Schön und gut, liefert aber auch kein anderes Ergebnis als min($werte) und max($werte).
                Fakt ist und bleibt, es besteht hier einfach keine Notwendigkeit, sich die Funktionalität selber zu basteln - sie ist mit den genannten Funktionen bereits gegeben, und funktioniert auch wie es zu erwarten wäre.

                Was der Threadstarter in seinem Code für einen Fehler eingebaut hat, werden wir wohl nicht mehr herausfinden, wenn er sich nicht mehr dazu äußert.
                [SIZE="1"]RGB is totally confusing - I mean, at least #C0FFEE should be brown, right?[/SIZE]

                Kommentar


                • #9
                  dat funzt nicht wolla , weil du automatisch von max > 0 ausgehst ..

                  ich würde ja max NACH dem ersten ermitteln des Minimums auf diesen Wert setzen und dann nochmal arbeiten
                  "Irren ist männlich", sprach der Igel und stieg von der Drahtbürste [IMG]http://www.php.de/core/images/smilies/icon_lol.gif[/IMG]

                  Kommentar


                  • #10
                    jo haste recht. Muss man überarbeiten.

                    Nur der Vollständigkeit halber:
                    PHP-Code:
                    $werte = array(-4, -, -);
                    $min $max $werte[0];
                    foreach(
                    $werte as $wert) {
                      if ( 
                    $wert $min $min $wert;
                      if ( 
                    $wert $max $max $wert;
                    }
                    echo 
                    "Min: $min - Max = $max"
                    Ich hab min() und max() bei mir auch ohne Probleme getestet und hatte jetzt verstanden, dass es bestimmte PHP-Versionen gibt, bei denen Merkwürdigkeiten auftreten können. Da muss man dann halt sehen, wie man anders zum Ziel kommt.
                    [PHP]if ($var != 0) {
                    $var = 0;
                    }[/PHP]

                    Kommentar


                    • #11
                      Zitat von Wolla Beitrag anzeigen
                      Ich hab min() und max() bei mir auch ohne Probleme getestet und hatte jetzt verstanden, dass es bestimmte PHP-Versionen gibt, bei denen Merkwürdigkeiten auftreten können.
                      Der Beweis dafür steht immer noch aus ... ich denke nach wie vor, dass der Frager einfach irgendwo anders in seinem Script - welches er uns aber nicht zeigt - einen Fehler hat.
                      [SIZE="1"]RGB is totally confusing - I mean, at least #C0FFEE should be brown, right?[/SIZE]

                      Kommentar


                      • #12
                        Wolla , jawoll so geht das ^^

                        und auch ich hab bisher nie mit min / max Probleme gehabt ... vor allem nicht mitm Parametercount .. an 1 Parameter kann man auch nicht so wirklich was falsch machen ^^

                        Allenfalls könnte der Unbedarfte vom Ergebnis ein wenig irritiert werden ....

                        bei komplett negativen Zahlen ist ja min immer die "größte" negative Zahl und max die "kleinste" - zumindest nach rein subjektiven Gesichtspunkten, mathematisch aber völlig korrekt

                        zum TO: ein wenig Code wäre wirklich gut, um den Fehler gemeinsam zu finden
                        "Irren ist männlich", sprach der Igel und stieg von der Drahtbürste [IMG]http://www.php.de/core/images/smilies/icon_lol.gif[/IMG]

                        Kommentar

                        Lädt...
                        X