[Variablen] Schweres Problem

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

  • [Variablen] Schweres Problem

    Hi Leutz,

    In einem Script-Abschnitt wird eine Datei mit $statfile=file() ausgelesen.
    In diesem File befinden sich je Zeile z.B. 1%%45 ... 5%%28 ... 8%%123
    Im folgenden Code zu sehen wird jeder String mit explode() getrennt.
    Wie zu erkennen soll in der Schleife mitunter in $tpl[max_views] der höchste Wert festgehalten werden.
    Das Problem hier ist, das dreistellige Zahlen nicht berücksichtigt werden.
    Im obigen Beispiel würde es heißen $tpl[max_views]=45 und nicht 123 ...
    Ich habe nicht die geringste Ahnung was das sein kann.
    ($tpl und $sys sind als Array().)
    $s_row1[1] enthält nachweislich die in jeden entsprechenden String befindliche Zahl.

    PHP-Code:
    foreach ($statfile as $statfilerow1)
        {
        
    $s_row1=explode("%%",$statfilerow1);
        if(
    $s_row1[1]>$tpl[max_views]) $tpl[max_views]=$s_row1[1];
        
    $tpl[stat_views_gesamt]+=$s_row1[1];
        
    $sys[statfilerows]++;
        } 

    Please Help



  • #2
    versuch mal:
    PHP-Code:
    $tpl[max_views] = 0;
    foreach ( ....) {
       if((int)
    $s_row1[1]>$tpl[max_views]) $tpl[max_views]=(int)$s_row1[1];
       ... 

    Kommentar


    • #3
      ... hmmm ...
      was ich aber nicht verstehe ist wieso bei
      if($s_row1[1]>$tpl[max_views]) $tpl[max_views]=$s_row1[1];
      die dreistelligen Zahlen nicht berücksichtigt werden.

      Vorweg wird im Script überhaupt nichts vorgegeben, von wegen zehnerstellen und was weiß ich ...

      Es ist auch so, wenn das File mit 1%%123 startet dannach fortlaufend nur zweistellige Zahlen hat, wird die höchste aus den Zweistelligen berücksichtigt.

      Das Script hab ich schon verändert , doch interessiert es mich dennoch warum das so ist.



      Kommentar


      • #4
        funktionierts jetzt?

        wenn ja, ist das problem gewesen, dass du $tpl[max_views] keinen initialwert zugewiesen hast.
        was soll er nun tun? aus der foreach schleife kommt grunsätzlich erstmal ein text, also vergleicht er die beiden werte alphanumerisch, weil er nicht ahnen kann, dass du es numerisch vergleichen willst.

        durch das
        $tpl[max_views] = 0;
        brauchst du wahrscheinlich nicht mal mehr ein (int) in der if abfrage, da er dann weiß, das $tpl[max_views] ein numerischer wert ist, und wahrscheinlich auch gleich numerisch vergleicht.

        insofern berücksichtigt er die dreistelligen "Strings" schon, aber eben nicht als Zahl und damit ist "48" numal größer als "123"

        Kommentar

        Lädt...
        X