Problem mit Mehrdimensionalem Array

xtramen01

Erfahrenes Mitglied
Hallo leute,

ich habe ein Problem mit der Bildung eines Arrays.
Ich benötige das Array in folgender Form:

Code:
Array ( [0] => Array ( [products_price_break_id] => 138 [products_id] => 28 [products_price] => 3.0000 [products_qty] => 1 [products_options_values_id] => 5 ) ) 

Array ( [1] => Array ( [products_price_break_id] => 139 [products_id] => 28 [products_price] => 4.0000 [products_qty] => 2 [products_options_values_id] => 6) ) 

Array ( [2] => Array ( [products_price_break_id] => 140 [products_id] => 28 [products_price] => 5.0000 [products_qty] => 3 [products_options_values_id] => 7 ) )

Wie bilde ich so ein Array?
Ich habe schon alles versucht, bin aber mit meinem Latein am Ende.
Hier mein letzter Versuch.

PHP:
        $price_breaks_array = array();
        $pov = tep_get_pov($_GET['products_id'], $languages_id);

        for ($i=0, $n=sizeof($pov); $i<$n; $i++) {

        $price_breaks_query = tep_db_query("select * from " . TABLE_PRODUCTS_PRICE_BREAK . "

        where products_id = '" . (int)$product_id . "'
        and products_options_values_id = '".$pov[$i]['products_options_values_id']."'
        order by products_qty");

        while ($price_break = tep_db_fetch_array($price_breaks_query)) {
          $price_breaks_array[$i] = $price_break;

        }
        echo print_r($price_breaks_array).'<br><br>';
        }

Wäre wirklich sehr dankbar wenn mal einer drüberschauen könnte.

Gruss
 
Zuletzt bearbeitet:
die schleife ohne $i, denn $i bleibt immer gleich und somit überschreibst du immer den gleichen Eintrag
PHP:
        while ($price_break = tep_db_fetch_array($price_breaks_query)) {
          $price_breaks_array[] = $price_break;
        }
 
Ok Danke. Aber so hatte ich es auch schon probiert.
Ich mach mal ein anderes Beispiel das es hoffentlich genauer beschreibt was nicht klappt.

Ich habe die besagte Abfrage:

PHP:
        $price_breaks_array = array();
        $pov = tep_get_pov($_GET['products_id'], $languages_id);

        for ($i=0, $n=sizeof($pov); $i<$n; $i++) {

             echo $pov[$i]['products_options_values_name'] . '<br>';

             $price_breaks_query = tep_db_query("select * from " . TABLE_PRODUCTS_PRICE_BREAK . " where products_id = '" . (int)$product_id . "' and products_options_values_id = '".$pov[$i]['products_options_values_id']."' order by products_qty");

                 while ($price_break = tep_db_fetch_array($price_breaks_query)) {

                    echo $price_break['products_qty'] . '<br>';

                  }

        }

Welche mir folgendes RICHTIGES ausgibt:

Code:
Name 1
  1
  2
  3
Name 2
  5
  6
  7
Name 3
Name 4

Die echos die da stehen sind nur zum testen ob die Abfrage richtig ist.
Nun muss ich das Array an einer anderen Stelle genau so ausgeben lassen.

Das versuche ich mit folgender selben Abfrage, nur halt am Schluss das Array gebildet:

PHP:
$price_breaks_array = array();
        $pov = tep_get_pov($_GET['products_id'], $languages_id);

        for ($i=0, $n=sizeof($pov); $i<$n; $i++) {
        $price_breaks_query = tep_db_query("select * from " . TABLE_PRODUCTS_PRICE_BREAK . " where products_id = '" . (int)$product_id . "' and products_options_values_id = '".$pov[$i]['products_options_values_id']."' order by products_qty");

        while ($price_break = tep_db_fetch_array($price_breaks_query)) {
          $price_breaks_array[$i][] = $price_break;

        }
        }

Und ausgeben lassen tue ich es mit:

PHP:
 $pov = tep_get_pov($_GET['products_id'], $languages_id);
       for ($i=0, $n=sizeof($pov); $i<$n; $i++) {

       echo $pov[$i]['products_options_values_name']. '<br>';

           foreach($price_breaks_array as $price_break) {

           echo $price_break[$i]['products_qty'].'<br>';

           }
       }

Als Ergebniss bekomme ich:

Code:
Name 1
  1
  5
Name 2
  2
  6
Name 3
  3
  7
Name 4

Das Array ist also irgendwie falsch gebildet.
Also anders wie in der eigentliche Abfrage.

hast Du eine Idee, warum das nicht klappen kann?

Gruss und Danke !
 
In der Ausgabe hast du mMn das $i am falschen Ort. So sollte es glaub aussehen

PHP:
           foreach($price_breaks_array[$i] as $price_break) {
               echo $price_break['products_qty'].'<br>';
           }
 
Boahhh!!
Das klappt tatsächlich!

Ich hätte mir Stunden ersparen können.

Danke dir recht herzlich!

Gruss
 

Neue Beiträge

Zurück