Problem mit array mittels foreach und if Überprüfung

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

  • Problem mit array mittels foreach und if Überprüfung

    Hey @ all,

    Ich habe folgendes Problem:

    Ein mehrdimensionales Array wird mit foreach durchlaufen. Bei jedem Duchlauf soll dann geprüft werden, ob das Array einen Wert entspricht. Ist dies der Fall soll etwas gamacht werden, ansonsten soll auf eine andere Seite mittels header umgeleitet werden.
    Der nötige Programmcode sieht vereinfacht folgendermaßen aus:

    PHP-Code:
    $array = array(array("email" => "dies"),array( "email" => "diesdas"));
    $wert "dies";
    foreach (
    $array as $result) {
          if(
    $result['email'] === $wert) {
                 
    mach was;
                 exit;
          } else {
                 
    header('Location:andere Seite');
                 die();
          }

    Dies funktioniert soweit so gut. Aber! Es wird, wenn nach $wert=diesdas gefiltert werden soll, beim ersten Durchlauf der Schleife zusätlich zum gewünschten Ergebnis die Header-Fehlermeldung
    Code:
    [B]Warning[/B]:  Cannot modify header information - headers already sent  by...
    ausgegeben. Mir blieb bis jetzt keine ander Möglichkeit die Headerzeile mit einem @ zu versehen. Gibt es da einen besseren Ansatz?? Oder muss ich mit dieser Fehlermeldung einfach leben?

    Gruß

  • #2
    Du darfst vor header() keinerlei Ausgabe machen. Der Hinweis wo die Ausgabe stattfindet hast du bei der Fehlermeldung abgeschnitten.

    Kommentar


    • #3
      Ohh man where is my brain?? Da war ich doch mit der Problembeschreibung ein Schritt zurück...
      Das mit dem Header ist natürlich klar und wird ja schon durch exit erledigt ( zumindest, wenn es beim ersten Durchlauf einen Treffer gibt). Wenn es nun aber beim ersten Durchlauf keinen Treffer gibt, ist ein zweiter, dritter Durchlauf usw. nötig. Durch denn else Teil geschieht das aber nicht und die header Funktion greift. Es sollen aber alle Array-Elemente durchlaufen/geprüft werden.

      Kommentar


      • #4
        Ja dann unterlasse halt innerhalb der Schleife sämtliche Aktionen, die diese vorzeitig beenden würden ...
        I don't believe in rebirth. Actually, I never did in my whole lives.

        Kommentar


        • #5
          Ja, so einfach kann es manchmal sein :-)
          hier der richtige Code:
          PHP-Code:
          $array = ...;
          $wert = ...;
          $variable 0;
          foreach (
          $array as $result) {
              if(
          $result['element'] === $wert) {
              
          $variable 1;
              }
          }
          if(
          $variable == 1) {
               
          mach was;
          } else {
               
          header('Location:andere Seite');
             die();

          Danke

          Kommentar

          Lädt...
          X