Ankündigung

Einklappen
Keine Ankündigung bisher.

Objekt Indizies mit Variabler generieren

Einklappen

Neue Werbung 2019

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

  • Objekt Indizies mit Variabler generieren

    Hallo PHP Pros,
    Kann man den Index in einem Array mit einer Variablen generiern?

    Bsp.:

    Es existiert eine unbekannte Zahl an Bietern die auf eine Liste von Aufgaben in einem Projekt bieten.
    1. Schritt: Abfrage der Bieter mit SELECT DISTINCT

    2. Schritt: Abfrage der Pivot Tabelle mit den Daten
    PHP-Code:
    $n 0
    $q 
    'SELECT Posten_ID, Posten_Titel',
    foreach (
    $Bieter as $Gebot)
    $n $n +1;
    $q $q.', IF(Posten_User = User, Posten_Preis, 0) as Bidder'.$n;}
    $q $q.' FROM Posten; 
    Die Abfrage klappt perfekt und es entsteht ein assoziatives Array u. a. mit den Indizies Bidder1, Bidder2 usw. Da die Anzahl der Bieter variiert von Projekt zu Projekt was mich bei der Ausgabe vor ein Problem stellt:
    Normalerweise gebe ich die Abfragen innerhalb einer foreach Schleife dar.

    PHP-Code:
    echo $row->Bidder
    Jetzt ist die Anzahl der Bieter aber unbekannt. Mein Ansatz war den Index zu generieren:

    PHP-Code:

    $n 
    0;
    foreach (
    $Gebot as $row)
    {
    echo 
    $row->Posten;
    foreach (
    $Bidder as $Bid)
    {
    $n $n +1;
    $Bieter 'Bidder'.$n;
    echo 
    $row->$Bieter;
    }

    Leider funktioniert das nicht und ich hoffe auf eure Hilfe

  • #2
    Zuerst einmal: "funktioniert nicht" ist und bleibt keine offizielle Fehlermeldung und taugt auch als Hinweis garnüscht. Bitte immer konkret werden, WAS nicht funktioniert (dazu gehört auch, WAS man erwartet und natürlich, was man programmiert hat).

    Zu deinen Fragen:
    Ja, du kannst die Indizes von Array ziemlich frei festlegen, natürlich nur, wenn du das Array erstellst.
    Um die Daten eines Arrays zu verarbeiten, bietet sich die foreach() Schleife an, hast du ja schon benutzt. Bei dieser Art Schleife brauchst du nicht zu wissen, wieviele Elemente im Array sind. Ein kleiner Tipp noch, du kannst die Notation erweitern und bekommst dann auch den Index in einer Variablen:
    PHP-Code:
    foreach($array as $index => $value) {

    Über 90% aller Gewaltverbrechen passieren innerhalb von 24 Stunden nach dem Konsum von Brot.

    Kommentar


    • #3
      Sorry aber so wie du das erklaerst sieht man die Zusammenhaenge und den Aufbau der Variablen nicht.

      Kommentar


      • #4
        Wenn dein Array nur BidderX Felder enthält kannst du folgendermaßen vorgehen:

        PHP-Code:
        //iteration über die rows aus der DB
        foreach($rows AS $row) {
            
        //iteration über die Bidder
            
        foreach($row AS $field) {
                echo 
        $field;
            }

        "Alles im Universum funktioniert, wenn du nur weißt wie du es anwenden musst".

        Kommentar


        • #5
          Also die Tabelle sollte folgendermaßen aussehen:

          Posten Bieter1 Bieter2 Bieter3......unbekannte Anzahl an Bietern
          Dach 100€ 123€ 345€
          Boden
          Decke

          Das Problem ist die unbekannte Anzah der Bieter.

          Kommentar


          • #6
            Ich schließe mich cycap an:
            Sorry aber so wie du das erklaerst sieht man die Zusammenhaenge und den Aufbau der Variablen nicht.
            Leider funktioniert das nicht
            Was funktioniert nicht?
            Das Problem ist die unbekannte Anzah der Bieter.
            Leider verstehe ich nicht, was du meinst. Warum ist das ein Problem? Eine foreach-Schleife kommt mit einer variablen Anzahl an Elementen im Array prima klar.

            Vielleicht holst du noch mal etwas aus und zeigst uns ein paar Array-Dumps.
            Welche Daten müssen wie verknüpft werden und wo liegt genau das Problem?
            [URL]http://hallophp.de[/URL]

            Kommentar


            • #7
              Zitat von Dark Guardian Beitrag anzeigen
              Wenn dein Array nur BidderX Felder enthält kannst du folgendermaßen vorgehen:

              PHP-Code:
              //iteration über die rows aus der DB
              foreach($rows AS $row) {
                  
              //iteration über die Bidder
                  
              foreach($row AS $field) {
                      echo 
              $field;
                  }

              Ich hab mich verlesen. Dachte $row wäre ein Array aber es ist ein Objekt. Dann müsste das ganze so aussehen:

              PHP-Code:
              //iteration über die rows aus der DB
              $excludeFields = array('posten');
              foreach(
              $rows AS $row) {
                  
              //iteration über die Bidder
                  
              $countBidder count($row) - count($excludeFields);
                  for(
              $i=0;$i<$countBidder;$i++) {
                      
              $bidderField 'Bidder'.$i;
                      echo 
              $row->$bidderField;
                  }

              "Alles im Universum funktioniert, wenn du nur weißt wie du es anwenden musst".

              Kommentar

              Lädt...
              X