Mario: x-te elemente im Array anzeigen:

Hallo,

ich will die X-ten Elemente eines Arrays anzeigen.

Hier mein bisheriger Code:

$anz=10; // Anzahl der anzuzeigenden Elemente je Seite
$pos=2;  // aktuelle Seite
$xx=0;   // Counter-Variable

// Ein Array mit n Elementen, Die Schlüssel sind alphanummerisch
$arr = array(
  "Hallo_a" => "Hallo1",
  "Hallo_b" => "Hallo2",
  "Hallo_c" => "Hallo3",
  "Hallo_d" => "Hallo4",
  ...
  "Hallo_x" => "Hallo24",
  "Hallo_y" => "Hallo25",
  "Hallo_z" => "Hallo26"
);

// Und hier meine bisherige Idee:
// Das komplette Array durchlaufen, befindet sich der Schlüssel nicht // im gewünschten Bereich, Schleife ohne Ausdruck fortsetzen.

foreach ($arr as $k => $v){
 $xx++;
 if ($xx <= $Pos * $anz or $xx > ($pos + 1) * $anz) continue;
 print $xx.". ".$k." ".$v."<br>\n";
};

Ich suche nun einen Ansatz, der mir die große Schleife erspart. So etwas wie View_Schlüssel ($arr, 20, 10); -> Zeige 10 Schlüssel ab Position 20.

Kann mir jemand helfen?

Gruß, Mario

  1. Hallo Mario,
    warum baust du denn nicht selbst eine
    Funktion aus deiner Schleife ?

    foreach ($arr as $k => $v){
     $xx++;
     if ($xx <= $Pos * $anz or $xx > ($pos + 1) * $anz) continue;
     print $xx.". ".$k." ".$v."<br>\n";
    };

    Ich suche nun einen Ansatz, der mir die große Schleife erspart. So etwas wie View_Schlüssel ($arr, 20, 10); -> Zeige 10 Schlüssel ab Position 20.

    z.b. (*nicht getestet müsste aber gehen)

    function view_schl($arr, $start=0, $anz=10)
    {
     foreach ($arr as $k => $v)
     {
     $xx++;
     if ($start > $xx){continue; $zz++}
     $output .= $xx.". ".$k." ".$v."<br>\r\n";
     if($zz == $anz){break;}
     }
    return $output;
    }

    // AUFRUF  DURCH zb. : view_schl($meinarray,'13','4')

    // Ich würde aber normalerweise die Funktion
    // array_slice() nutzen. siehe MANUAL

    Gruss
    Nikki

    1. // AUFRUF  DURCH zb. : view_schl($meinarray,'13','4')

      Nachtrag:
      Natürlich bei der Ausgabe print oder echo  nutzen
      // AUFRUF  DURCH zb. : echo view_schl($meinarray,'13','4')

  2. Hallo Mario,

    So etwas wie View_Schlüssel ($arr, 20, 10); -> Zeige 10 Schlüssel ab Position 20.

    vielleicht array_slice() (->http://www.php.net/array_slice)? Ausgeben musst du die Elemente dann natürlich noch selbst.

    Grüße aus Nürnberg
    Tobias

  3. Hallo Tobias, Hallo Nicole,

    array_slice ist wunderbar. Ich hatte die Funktion immer nur mit nummerischen Arrays in Verbindung gebracht, aber es funktioniert auch mit alphanummerischen.

    Ich Danke Euch

    Gruß, Mario