Ankündigung

Einklappen
Keine Ankündigung bisher.

Array mit foreach schleife als Tabelle ausgeben für google chart api

Einklappen

Neue Werbung 2019

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

  • Array mit foreach schleife als Tabelle ausgeben für google chart api

    Hallo mal wieder,

    Ich habe ein Array das wie Folgt aussieht:

    (
    [Atom] => Array
    (
    [power] => Array
    (
    [0] => 1600
    [1] => 1700
    [2] => 1800
    [3] => 1900
    [4] => 2000
    [5] => 2100
    )

    [price] => Array
    (
    [0] => 10
    [1] => 12
    [2] => 14
    [3] => 16
    [4] => 18
    [5] => 19
    )

    )

    [Core i7] => Array
    (
    [power] => Array
    (
    [0] => 2500
    [1] => 2600
    [2] => 2700
    [3] => 2800
    [4] => 2900
    [5] => 3000
    [6] => 3100
    [7] => 3200
    [8] => 3300
    [9] => 3400
    [10] => 3500
    [11] => 3600
    [12] => 3700
    [13] => 3800
    [14] => 3900
    )

    [price] => Array
    (
    [0] => 147
    [1] => 150
    [2] => 153
    [3] => 156
    [4] => 158
    [5] => 161
    [6] => 164
    [7] => 167
    [8] => 170
    [9] => 173
    [10] => 176
    [11] => 178
    [12] => 181
    [13] => 184
    [14] => 187
    )

    )

    )


    es wird je nachdem was ausgewählt wurde größer.

    Ich möchte es nun in einer foreach schleife auslesen und eine Tabelle schreiben, die wie folgt aussehen soll:

    ['Leistung', 'I7', 'I5' , 'I3', 'Atom'],
    ['1000', null, null, null, 50],
    ['2500', 140, 120 , 110, null],
    ['2700', 150, 130 , 120, null],
    ['2900', 160, 140 , 130, null],
    ['3100', 170, 150 , null, null]


    Die erste Zeile bekomme ich soweit hin. Ich speichere sie in einer Variablen und möchte nun den rest anhängen.

    Leider bekomme ich einen Fehler wenn ich versuche eine foreach schleife aufzubauen:

    Warning: Invalid argument supplied for foreach()

    PHP-Code:
    foreach ($array as $n => $name) {
            foreach (
    $name as $kleistung => $power) {
            echo 
    $power ."<br><br><br>";
    }
                        

    Das Array ist ja so aufgebaut:

    (nur eine testausgebe)

    $array['Name des CPU']['power'] und
    $array['Name des CPU']['price']

    Den Namen des CPU´s kann ich leicht eintragen. aber wie muss die schleife aussehen das ich dann so eine Tabelle schreiben kann. Wichtig ist das die Leistung in der richtigen reihenfolge ist und das dann auch die richtigen preise am richtigen platz stehen.


  • #2
    meines erachtens:
    PHP-Code:
    foreach ($array as $leistung) {
            foreach (
    $name as $kleistung => $power) {
            
    $out .=  $leistung ' ' $power ."<br>";
    }
                        

    Kommentar


    • #3
      Danke für die schnelle antwort.

      Leider bekomme ich dann noch immer den fehler:

      Warning: Invalid argument supplied for foreach()

      was in diesem fall in der zeile des 2. foreach ist.

      btw. ich hatte nen schreibfehler drin:

      PHP-Code:
      foreach ($array_sql_desktop_cpu as $leistung) {
               foreach (
      $name as $leistung => $power) {
                             
      $tabelle_desktop_cpu .=  $leistung ' ' $power ."<br>";
                }


      das array heißt $array_sql_desktop_cpu
      der string in dem die tabelle gespeichert werden soll $tabelle_desktop_cpu


      Liegt es daran das ich keinen nummerischen anfang habe sonder einen assoziativen?

      Kommentar


      • #4
        Zitat von stiki Beitrag anzeigen
        Danke für die schnelle antwort.

        Leider bekomme ich dann noch immer den fehler:

        Warning: Invalid argument supplied for foreach()

        was in diesem fall in der zeile des 2. foreach ist.

        btw. ich hatte nen schreibfehler drin:

        PHP-Code:
        foreach ($array_sql_desktop_cpu as $leistung) {
                 foreach (
        $name as $leistung => $power) {
                               
        $tabelle_desktop_cpu .=  $leistung ' ' $power ."<br>";
                  }


        das array heißt $array_sql_desktop_cpu
        der string in dem die tabelle gespeichert werden soll $tabelle_desktop_cpu


        Liegt es daran das ich keinen nummerischen anfang habe sonder einen assoziativen?
        PHP-Code:
        foreach ($array_sql_desktop_cpu as $leistung) {
                 foreach (
        $name as $K_leistung => $power) {
                               
        $tabelle_desktop_cpu .=  $leistung ' ' $power ."<br>";
                  }


        Kommentar


        • #5
          Ich habe es nun so weit des die schleifen aus diesem array:

          (
          [Atom] => Array
          (
          [power] => Array
          (
          [0] => 1600
          [1] => 1700
          [2] => 1800
          [3] => 1900
          [4] => 2000
          [5] => 2100
          )

          [price] => Array
          (
          [0] => 10
          [1] => 12
          [2] => 14
          [3] => 16
          [4] => 18
          [5] => 19
          )

          )

          [Core i7] => Array
          (
          [power] => Array
          (
          [0] => 2500
          [1] => 2600
          [2] => 2700
          [3] => 2800
          [4] => 2900
          [5] => 3000
          [6] => 3100
          [7] => 3200
          [8] => 3300
          [9] => 3400
          [10] => 3500
          [11] => 3600
          [12] => 3700
          [13] => 3800
          [14] => 3900
          )

          [price] => Array
          (
          [0] => 147
          [1] => 150
          [2] => 153
          [3] => 156
          [4] => 158
          [5] => 161
          [6] => 164
          [7] => 167
          [8] => 170
          [9] => 173
          [10] => 176
          [11] => 178
          [12] => 181
          [13] => 184
          [14] => 187
          )

          )

          )


          Das macht:

          ['Leistung','Atom','Core i7']
          ,['1600','10','147',]
          ,['1600','12','150',]
          ,['1700','10','147',]
          ,['1700','12','150',]
          ,['1800','10','147',]
          ,['1800','12','150',]
          ,['1900','10','147',]
          ,['1900','12','150',]
          ,['2000','10','147',]
          ,['2000','12','150',]
          ,['2100','10','147',]
          ,['2100','12','150',]
          ,['1600','10','147',]
          ,['1600','12','150',]
          ,['1700','10','147',]
          ,['1700','12','150',]
          ,['1800','10','147',]
          ,['1800','12','150',]
          ,['1900','10','147',]
          ,['1900','12','150',]
          ,['2000','10','147',]
          ,['2000','12','150',]
          ,['2100','10','147',]
          ,['2100','12','150',]

          Problem ist das es die Leistungen nicht richtig überprüft und da is noch nen komma zu viel was ich aber bestimmt gleich raus bekomme.

          Jedoch Wie bekomme ich es hin das er dann auch mehr als 2 CPU vergleicht?


          Meine schleife sieht wie folgt aus

          PHP-Code:
          #############################   Ausgabe Header Grafik
                              
          $i 0;
                              
          $tabelle_desktop_cpu "['Leistung'";
                              while(
          $i != count($array)){
                                  
                                  
          $tabelle_desktop_cpu .= ",'$array[$i]'";
                                  
          $i++;
                              }
                              
          $tabelle_desktop_cpu .= "]<br>";
          #############################    Augabe Body Grafik                    
                              
                              
                              
                              ##### foreach schleifen um alles auszulesen
                              
          $i 0;
                              
          $desktop_cpu_zaehler count($array);
                              
          #Für jeden Gewählten CPU
                              
          foreach ($array as $cpu){
                                  
          #Für jede eingetrage leistung
                                  
          foreach ($array_sql_desktop_cpu[$array[$i]]['power'] as $power) {
                                      
                                      
          #Für jeden gewählten CPU
                                      
          $power_index 0;
                                      foreach (
          $array as $cpu){
                                          
                                          
          #$tabelle_desktop_cpu .= ",[";
                                          
                                          #Wenn die Leistung des erten niedriger ist als die Leitung des kleinsten des nächsten
                                          
          if($array_sql_desktop_cpu[$array[$i]]['power'][$power_index] < $array_sql_desktop_cpu[$array[$i]]['power'][$power_index]){
                                              
                                              
          $tabelle_desktop_cpu .= ",[";
                                              
          $tabelle_desktop_cpu .=   "'".$power."','".$array_sql_desktop_cpu[$array[$i]]['price'][$power_index]."','null'";
                                              
          $tabelle_desktop_cpu .= ",";
                                              
                                          }
                                          
          #Wenn die Leistung die gleiche ist
                                          
          else if($array_sql_desktop_cpu[$array[$i]]['power'][$power_index] = $array_sql_desktop_cpu[$array[$i]]['power'][$power_index]){
                                              
                                              
          $tabelle_desktop_cpu .= ",[";
                                              
          $k $i 1;
                                              
          $tabelle_desktop_cpu .=   "'".$power."','".$array_sql_desktop_cpu[$array[$i]]['price'][$power_index]."','".$array_sql_desktop_cpu[$array[$k]]['price'][$power_index]."'";
                                              
          $tabelle_desktop_cpu .= ",";
                                              
                                          } 
                                          
          #Wenn die Leistung Höher ist
                                          
          else{
                                              break;
                                          }
                                          
          $power_index++;
                                          
          $tabelle_desktop_cpu .= "]<br>";
                                      }
                                      
                                      
          #$tabelle_desktop_cpu .= ",";
                                                      
                                  
          }  
                              } 

          Kommentar


          • #6
            deine Lösung

            http://www.php.net/manual/de/language.types.array.php

            Kommentar


            • #7
              Ich bekomme nun die ausgabe mit dem folgenden code schon mal hin:

              PHP-Code:
              if(isset($_POST['desktop_cpu_button'])){
                  
                  
              $desktop_cpu_auswahl $_POST['desktop_cpu_button'];
                  
                  
              $i 0;
                  
                  
              $neu true;
                  
                  while( 
              $i != count($array)){
                      if(
              $desktop_cpu_auswahl == $array[$i]){
                              
              $neu false;
                      }
                      
              $i++;
                  }
                  if(
              $neu == true){
                      
              $array[] = $desktop_cpu_auswahl;
                  }
                  
                  
              #zähler für Buttonklicks
                  
              $desktop_cpu_klick count($array);
                  
                  
                  
              #Datenbank abfrage nach Daten der CPU
                  
              if($desktop_cpu_klick != 0){
                      
                      
              $abfrage_desktop_cpu "SELECT cpu.cpu_name, cpu_price.price, cpu_price.power FROM cpu , cpu_price WHERE cpu.cpu_id = cpu_price.cpu_id AND categorie = '1' AND (cpu.cpu_name = '";
                      
                      
              $i = -1;
                      while (
              $i $desktop_cpu_klick){
                          
              $i++;
                          
              $abfrage_desktop_cpu .= $array[$i] . "' OR cpu.cpu_name = '";
                          
                      }
                      
                      
                      
                      
              $abfrage_desktop_cpu substr($abfrage_desktop_cpu0,-41);
                      
              $abfrage_desktop_cpu .=  ") ORDER BY cpu_price.power, cpu.cpu_name;";
                      
                      
                      
              #SQL abfrage nach $abfrage_desktop_cpu
                      
                      
              $sql_desktop_cpu mysql_query($abfrage_desktop_cpu$link);
                                  
                                  
              $num_row_desktop_cpu mysql_num_rows($sql_desktop_cpu);
                                  
              $array_sql_desktop_cpu = array();
                                  
              $i 0;
                                  
                                  
                                  while(
              $row_desktop_cpu mysql_fetch_array($sql_desktop_cpu)){
                                      
                                      
              $array_sql_desktop_cpu[$row_desktop_cpu['cpu_name']]['power'][] = $row_desktop_cpu['power'];
                                      
              $array_sql_desktop_cpu[$row_desktop_cpu['cpu_name']]['price'][]= $row_desktop_cpu['price'];
                                      
                                          
              $i++;
                                  }
                                  
                                  
                                  
              #############################   Ausgabe Header Grafik
                                  
              $i 0;
                                  
              $tabelle_desktop_cpu "['Leistung'";
                                  while(
              $i != count($array)){
                                      
                                      
              $tabelle_desktop_cpu .= ",'$array[$i]'";
                                      
              $i++;
                                  }
                                  
              $tabelle_desktop_cpu .= "]";
              #############################    Augabe Body Grafik                    
                                  
                                  
                                  
                                  ##### foreach schleifen um alles auszulesen
                                  
              $i 0;
                                  
              $desktop_cpu_zaehler count($array);
                                  
              #Für jeden Gewählten CPU
                                  
              $power_index 0;
                                  
              $cpu_index 1;
                                  echo 
              "Anzahl der Gewählten: $desktop_cpu_zaehler <br>";
                                  if(
              $desktop_cpu_zaehler 1){
                                      foreach (
              $array as $cpu){
                                          
                                          
              #Für jede eingetrage leistung
                                          
              if($power_index == 0){
                                              foreach (
              $array_sql_desktop_cpu[$array[$i]]['power'] as $power) {
                                                      
                                                      
              #Wenn die Leistung des erten niedriger ist als die Leitung des kleinsten des nächsten
                                                      
              if($array_sql_desktop_cpu[$array[$i]]['power'][$power_index] < $array_sql_desktop_cpu[$array[$cpu_index]]['power'][$power_index]){
                                                          
                                                          
              $tabelle_desktop_cpu .= ",[";
                                                          
              $tabelle_desktop_cpu .= $power.",".$array_sql_desktop_cpu[$array[$i]]['price'][$power_index].",null";
                                                          
              $tabelle_desktop_cpu .= ",";
                                                          
                                                      }
                                                      
              #Wenn die Leistung die gleiche ist
                                                      
              else if($array_sql_desktop_cpu[$array[$i]]['power'][$power_index] == $array_sql_desktop_cpu[$array[$cpu_index]]['power'][$power_index]){
                                                          
                                                          
              $tabelle_desktop_cpu .= ",[";
                                                          
              $tabelle_desktop_cpu .=  $power.",".$array_sql_desktop_cpu[$array[$i]]['price'][$power_index].",".$array_sql_desktop_cpu[$array[$cpu_index]]['price'][$power_index];
                                                          
              $tabelle_desktop_cpu .= ",";
                                                          
                                                      } 
                                                      
              #Wenn die Leistung Höher ist
                                                      
              else{
                                                          break;
                                                      }
                                                      
              $tabelle_desktop_cpu substr($tabelle_desktop_cpu0,-1);
                                                      
              $tabelle_desktop_cpu .= "]";
                                                      
              $power_index++;
                                              } 
                                              
              $power_index 2;
                                          }
                                          
                                          if(
              $power_index == 2){
                                              
              $power_index 0;
                                              foreach (
              $array_sql_desktop_cpu[$array[$cpu_index]]['power'] as $power) {
                                                      
                                                      
              #Wenn die Leistung des erten niedriger ist als die Leitung des kleinsten des nächsten
                                                      
              if($array_sql_desktop_cpu[$array[$cpu_index]]['power'][$power_index] > $array_sql_desktop_cpu[$array[$i]]['power'][$power_index]){
                                                          
                                                          
              $tabelle_desktop_cpu .= ",[";
                                                          
              $tabelle_desktop_cpu .=  $power.","."null,".$array_sql_desktop_cpu[$array[$cpu_index]]['price'][$power_index]."";
                                                          
              $tabelle_desktop_cpu .= ",";
                                                          
                                                      }
                                                      
              #Wenn die Leistung die gleiche ist
                                                      
              else if($array_sql_desktop_cpu[$array[$cpu_index]]['power'][$power_index] == $array_sql_desktop_cpu[$array[$i]]['power'][$power_index]){
                                                          
                                                          
              $tabelle_desktop_cpu .= ",[";
                                                          
              $tabelle_desktop_cpu .=  $power.",".$array_sql_desktop_cpu[$array[$i]]['price'][$power_index].",".$array_sql_desktop_cpu[$array[$cpu_index]]['price'][$power_index];
                                                          
              $tabelle_desktop_cpu .= ",";
                                                          
                                                      } 
                                                      
                                                      
                                                      else{
                                                          break;    
                                                      }
                                                      
                                                      
                                                      
                                                      
              $tabelle_desktop_cpu substr($tabelle_desktop_cpu0,-1);
                                                      
              $tabelle_desktop_cpu .= "]";
                                                          
              $power_index++;
                                              } 
                                              
              $power_index 3;
                                              
                                          }
                                          
                                          
              $cpu_index++;    
                                      }
                                  echo 
              $tabelle_desktop_cpu;
                                  }
                                  
                                  
                                  
                                  
                                  
              $i =0;
                                  foreach (
              $array as $cpu){
                                  echo 
              "<pre>";print_r($array_sql_desktop_cpu[$array[$i]]['power']);echo"</pre>";
                                  
              $i++;
                                  }
                                  
              # Test Ausgabe Grafik Daten
                                  
                                  
                      
              }
                  


              Nun habe ich aber das problem, dass wenn zuerst ein Daten satz mit einer größeren Leistungsangabe als der nächste startet garnichts mehr funktioniert.

              Ich müsste die Daten aus der Daten bank nach dem niedriegsten Datensatz in cpu_price.power sortiert fragen jedoch wei ich nicht wie das geht.

              Oder by cpu_price.power habe ich ja schon drin und mit dem zusatz MIN(cpu_price.power) bekomme ich nur diesen eine.

              Und das problem der weiteren CPU eingaben ist auch noch offen ich kann es lediglich mit if abfragen statisch erweitern

              Kommentar


              • #8
                PHP-Code:
                    $desktop_cpu_auswahl $_POST['desktop_cpu_button'];
                    
                    
                $i 0;
                    
                    
                $neu true;
                    
                    while( 
                $i != count($array)){
                        if(
                $desktop_cpu_auswahl == $array[$i]){
                                
                $neu false;
                        }
                        
                $i++;
                    }
                    if(
                $neu == true){
                        
                $array[] = $desktop_cpu_auswahl;
                    }
                    
                    
                #zähler für Buttonklicks
                    
                $desktop_cpu_klick count($array); 
                Allein das reicht mir schon, um nicht weiter zu lesen....
                Überdenke bitte deine Vorgehensweise nochmal.
                Was du hast, was du erreichen möchtest und wie du es umsetzen könntest.

                Dann fang mit einem leeren Dokument nochmal an, arbeite dich langsam voran und stell gegebenen Falls Fragen wenn du nicht weiter kommst.
                So wird das nie etwas, und dir kann auch nicht wirklich Jemand helfen.

                Kommentar


                • #9
                  Beim Posten von Quellcode oder strukturierten Daten bitte bbCode verwenden ([php] für PHP, [html] für HTML, [code] für den Rest (Dumps, Queries..)) und Code geeignet einrücken.
                  --

                  „Emoticons machen einen Beitrag etwas freundlicher. Deine wirken zwar fachlich richtig sein, aber meist ziemlich uninteressant.
                  Wenn man nur Text sieht, haben viele junge Entwickler keine interesse, diese stumpfen Texte zu lesen.“


                  --

                  Kommentar


                  • #10
                    und bitte, verschiebt das teil ins einsteiger

                    Kommentar

                    Lädt...
                    X