Mücke: Arraygrösse bestimmen

Hallöle..

Gibt es eine Funktion um die Grösse eines Arrays zu bestimmen?
Kenne so etwas nur aus VB bisher:

UBOUND(arr)

Gibts sowas auch für PHP oder muss man sich da selbst was basteln?

  1. Hellihello

    count()?

    frankx

  2. Hallo Freunde des gehobenen Forumsgenusses,

    Gibt es eine Funktion um die Grösse eines Arrays zu bestimmen?

    Was verstehst du unter der Größe eines Arrays?

    Kenne so etwas nur aus VB bisher:

    UBOUND(arr)

    Vielleicht suchst du count().

    Gruß
    Alexander Brock

    1. Was verstehst du unter der Größe eines Arrays?

      Das was count() mir zurückgibt :D..

      Also vielen Dank.. Die Lösung war mal wieder denkbar einfach..

    2. Moin!

      Kenne so etwas nur aus VB bisher:

      UBOUND(arr)

      Vielleicht suchst du count().

      UBOUND() und count() sind nicht das selbe!

      count() ermittelt die Anzahl der Elemente in einem Array - wobei ein PHP-Array ja eigentlich eher ein Hash ist, bzw. genauer gesagt eine verkettete Liste, deren Schlüssel sowohl Strings als auch Zahlen sein können.

      UBOUND() ermittelt in einem VBSCRIPT-Array die obere Grenze der Arrayindices. Analog gibt es LBOUND(), welches die untere Grenze der Arrayindices ermittelt (allerdings sind die Arrays nullbasiert, LBOUND() ergibt also immer die 0). Ein VBSCRIPT-Array ist dabei wirklich ein echtes Array, d.h. wenn man ermittelt hat, dass es von 0 bis 7 geht, dann existieren auch alle diese Elemente.

      Bei einem PHP-Array hingegen kann es durchaus Lücken geben. Alle nicht schon mal definierten, numerisch indizierten Arrayelemente existieren nicht - und werfen im Zugriffsfall eventuell eine NOTICE.

      Beispiel VBSCRIPT:

        
      dim arr(5), i  
      arr(2) = "zwei"  
      arr(4) = "vier"  
        
      for i = lbound(arr) to ubound(arr)  
        Response.write(i&": " & arr(i) & "<br>"&vbCRLF)  
      next  
      
      

      ergibt:

        
      0: <br>  
      1: <br>  
      2: zwei<br>  
      3: <br>  
      4: vier<br>  
      5: <br>  
      
      

      Beispiel PHP:

        
      error_reporting(E_ALL);  
        
      $arr = array();  
      $arr[2] = "zwei";  
      $arr[4] = "vier";  
        
      for ($i = 0; $i <= count($arr); $i++)  
      {  
        echo $i.": ".$arr[$i]."<br>\n";  
      }  
      
      

      ergibt:

        
      Notice: Undefined offset:  0 in /var/www/www.rautenberg.privat/htdocs/arraytest.php on line 16  
      0: <br>  
        
      Notice: Undefined offset:  1 in /var/www/www.rautenberg.privat/htdocs/arraytest.php on line 16  
      1: <br>  
      2: zwei<br>  
      
      

      Da nur zwei Elemente definiert sind, ergibt count() nur 2, und es werden nur drei Schleifendurchläufe (0, 1, 2) durchgeführt.

      Man muß seine Schleifenlogik also entsprechend anpassen!

      - Sven Rautenberg

      --
      My sssignature, my preciousssss!