Christian Leipnitz: leere Arrays nicht anzeigen

Hallo zusammen,

ich lesen eine CSV-Datei aus und stelle die Informationen über drei Arrays auf einer Seite dar.
Wichtig ist mir dabei, dass diese Informationen untereinander stehen (array[4]<br>array[5]<br>array[6]).
So weit so gut - so lange jeder der drei Arrays einen Inhalt hat.
Wenn allerdings einer der Arrays leer ist, wird eine Leerzeile angezeigt, was nicht besonders "schön" aussieht.

Gibt es eine Möglichkeit, diesen Umstand zu umgehen?
Also den leeren Array gar nicht erst anzeigen zu lassen?
Wobei dann wahrscheinlich der Zeilenumbruch (<br>) anders eingebunden werden müßte.

Mit den Befehlen "empty" und "unset" hatte ich bisher keinen Erfolg.

Besten Dank im Voraus,

  • Christian -
  1. hi!

    for ($i = 0;$i < count($array);$i++) {
      if ($array[$i] != "") {
        echo $array[$i];
        if ($i == count($array) - 1) echo "<br";
      }
    }

    Gruß
    DMIII

    1. upsi

      if ($i < count($array) - 1) echo "<br";

      Gruß
      DMIII

  2. Hallo zusammen,

    ich lesen eine CSV-Datei aus und stelle die Informationen über drei Arrays auf einer Seite dar.
    Wichtig ist mir dabei, dass diese Informationen untereinander stehen (array[4]<br>array[5]<br>array[6]).
    So weit so gut - so lange jeder der drei Arrays einen Inhalt hat.
    Wenn allerdings einer der Arrays leer ist, wird eine Leerzeile angezeigt, was nicht besonders "schön" aussieht.

    Gibt es eine Möglichkeit, diesen Umstand zu umgehen?
    Also den leeren Array gar nicht erst anzeigen zu lassen?
    Wobei dann wahrscheinlich der Zeilenumbruch (<br>) anders eingebunden werden müßte.

    Mit den Befehlen "empty" und "unset" hatte ich bisher keinen Erfolg.

    hi,

    soviel ich weiss, kann man einfach schreiben:

    if($array[4])
      print $array[4]."<br>";
    if($array[5])
      print $array[5]."<br>";
    if($array[6])
      print $array[6]."<br>";

    bjoern

    1. Aloha!

      hi,

      soviel ich weiss, kann man einfach schreiben:

      if($array[4])
        print $array[4]."<br>";
      if($array[5])
        print $array[5]."<br>";
      if($array[6])
        print $array[6]."<br>";

      Nein, kann man nicht. Denn wenn der Inhalt des Arrays zu "false" evaluiert, dann gibts keine Ausgabe, obwohl eine erfolgen müsste. Beispielsweise kann das Array das Zeichen "0" (Null) enthalten - diese Zahl würde nicht ausgegeben.

      Wenn schon, dann sollte man auf leere Variable prüfen:

      if(!empty($array[4]))
        print $array[4]."<br>";
      if(!empty($array[5]))
        print $array[5]."<br>";
      if(!empty($array[6]))
        print $array[6]."<br>";

      Die Methode mit join() ist aber noch besser, schneller und trickreicher. :)

      - Sven Rautenberg

  3. Hallo zusammen,

    Gibt es eine Möglichkeit, diesen Umstand zu umgehen?
    Also den leeren Array gar nicht erst anzeigen zu lassen?
    Wobei dann wahrscheinlich der Zeilenumbruch (<br>) anders eingebunden werden müßte.

    du könntest leere Elemente entfernen und die Anzeige mit Hilfe
    von join machen.

    Also z.B.

    $items = array( 'Apfel','','Birne','','','Pflaume','Säbelzahntiger','Orange' );

    $show = array_filter($items);

    echo join('<br>',$show);

    Viele Grüße

    lulu

    1. Hallo lulu,

      du könntest leere Elemente entfernen und die Anzeige mit Hilfe
      von join machen.
      Also z.B.

      $items = array( 'Apfel','','Birne','','','Pflaume','Säbelzahntiger','Orange' );

      $show = array_filter($items);
      echo join('<br>',$show);

      Super, funktioniert wunderbar.
      Ein dickes "Dankeschön" an Dich - und natürlich auch an die anderen - für die schnelle Hilfe!

      Viele Grüße,

      • Christian -