Array als Variable

xtraMen

Erfahrenes Mitglied
Hallo Leute,

ich bekomme es einfach nicht hin.
Ich hab ein Array das in einer Schleife ausgegeben werden soll.

Jetzt muss ich aufgrund von gegebenheiten den Inhalt der Schleife mit der Variable $inhalt ausgeben.
Und das scheint ein großes Problem zus ein.

Also praktisch so:

$inhalt = 'INHALT DER SCHLEIFE' ;

echo $inhalt ;

Hier ist mal die Schleife ich hoffe es kann mir jemand einen Denkanstos geben:
PHP:
 $row = 0;
  $col = 0;
  while ($default_specials = tep_db_fetch_array($new)) {

    $default_specials['products_name'] = tep_get_products_name($default_specials['products_id']);
    $info_box_contents[$row][$col] =  array('align' => 'center',
                                           'params' => 'class="smallText" width="33%" valign="top"',
                                           'text' =>   '<a href="' . tep_href_link(FILENAME_PRODUCT_INFO, 'products_id=' . $default_specials["products_id"]) . '">' . tep_image(DIR_WS_IMAGES . $default_specials['products_image'], $default_specials['products_name'], SMALL_IMAGE_WIDTH, SMALL_IMAGE_HEIGHT) . '</a><br><a href="' . tep_href_link(FILENAME_PRODUCT_INFO, 'products_id=' . $default_specials['products_id']) . '">' . $default_specials['products_name'] . '</a><br><s>' . $currencies->display_price($default_specials['products_id'],$default_specials['products_price'], tep_get_tax_rate($default_specials['products_tax_class_id'])) . '</s><br><span class="productSpecialPrice">' . $currencies->display_price_nodiscount($default_specials['specials_new_products_price'], tep_get_tax_rate($default_specials['products_tax_class_id'])) . '</span>');
    $col ++;
    if ($col > 2) {
      $col = 0;
     $row ++;
    }
  }
 
OK anderst gefragt.

Warum wir $inhalt nur einmal ausgegeben obwohl es in einer Schleife ist.
Hier der geänderte Code:

PHP:
  $row = 0;
  $col = 0;
  while ($default_specials = tep_db_fetch_array($new)) {

    $default_specials['products_name'] = tep_get_products_name($default_specials['products_id']);
    
    $inhalt = '<a href="' . tep_href_link(FILENAME_PRODUCT_INFO, 'products_id=' . $default_specials["products_id"]) . '">' . tep_image(DIR_WS_IMAGES . $default_specials['products_image'], $default_specials['products_name'], SMALL_IMAGE_WIDTH, SMALL_IMAGE_HEIGHT) . '</a><br><a href="' . tep_href_link(FILENAME_PRODUCT_INFO, 'products_id=' . $default_specials['products_id']) . '">' . $default_specials['products_name'] . '</a><br><s>' . $currencies->display_price($default_specials['products_id'],$default_specials['products_price'], tep_get_tax_rate($default_specials['products_tax_class_id'])) . '</s><br><span class="productSpecialPrice">' . $currencies->display_price_nodiscount($default_specials['specials_new_products_price'], tep_get_tax_rate($default_specials['products_tax_class_id'])) . '</span>';
    
    $col ++;
    if ($col > 2) {
      $col = 0;
     $row ++;
    }
  }

echo $inhalt;
 
Du weist $inhalt in jedem Schleifendurchgang einen neuen Wert zu. Informiere dich doch mal über Stringverkettungen in PHP, dann wirst du bestimmt eine Lösung finden.
 
OK hab das Problem verstanden.

Aber dann müsste es ja so gehen, tuts aber nicht.
Ich komme einfach nicht weiter.

PHP:
  $row = 0;
  $col = 0;
  while ($default_specials = tep_db_fetch_array($new)) {

    $default_specials['products_name'] = tep_get_products_name($default_specials['products_id']);
    $info_box_contents[$row][$col] =  array('align' => 'center',
                                           'params' => 'class="smallText" width="33%" valign="top"',
                                           'text' =>   '<a href="' . tep_href_link(FILENAME_PRODUCT_INFO, 'products_id=' . $default_specials["products_id"]) . '">' . tep_image(DIR_WS_IMAGES . $default_specials['products_image'], $default_specials['products_name'], SMALL_IMAGE_WIDTH, SMALL_IMAGE_HEIGHT) . '</a><br><a href="' . tep_href_link(FILENAME_PRODUCT_INFO, 'products_id=' . $default_specials['products_id']) . '">' . $default_specials['products_name'] . '</a><br><s>' . $currencies->display_price($default_specials['products_id'],$default_specials['products_price'], tep_get_tax_rate($default_specials['products_tax_class_id'])) . '</s><br><span class="productSpecialPrice">' . $currencies->display_price_nodiscount($default_specials['specials_new_products_price'], tep_get_tax_rate($default_specials['products_tax_class_id'])) . '</span>');
    $col ++;
    if ($col > 2) {
      $col = 0;
     $row ++;
    }
  }
    
                                $inhalt = $info_box_contents[$row][$col] ;
                                
                                echo $inhalt;
 
Jetzt kommt schon ?!

Für euch Profis ist das doch sicher ein Klacks, und ich versuche es schon seit sicherlich 48 Stunden.
Ich will doch nur den Inhalt der Schleife mit echo $inhalt; ausgeben können.

Ich bekommes es wirklich nicht hin.

Hab schon alles MIR mögliche versucht.

z.b. so aber da bekomme ich immer nur das erste Ergebnis geliefert.

$inhalt = $info_box_contents[$row][$col]['text'];

Gruss und DAnke.
 
Zuletzt bearbeitet:
Wenn du in dem Code aus deinem 2. Posting $inhalt = '...... durch $inhalt.= '...... ersetzt, sollte es besser funktionieren.

Der Punkt ist der Operator zur Stringverknüpfung... dadurch wird der die Variable nicht überschrieben, sondern der String hinten drangehängt.
 
Ja so weit war ich auch schon.
Allerdings geht das nur ohne das Array.
Sobald ich es mit einem Aray versuche kommt dann die Meldung (Array) dort wo ich $inhalt dann ausgeben lassen möchte.

Gibt es den keine Möglichkeit das Array in eine Variable zu fassen und per echo alle Inhalte ausgeben zu lassen.
Der Code im vorletzten Post sollte dabei berücksichtigt werden.
Man das wäre wie ein 5er im Lotto.

Gruss
 
Also es geht darum.

Ich hole mit folgendem Code ein Template.
Die Variable $inhalt wird als Platzhaltergesetzt um eben den Inhalt des Arrays auszugeben.
Es klappt bei allen Dateien bis auf dieser, da diese ein Mehrdimensionales Array hat und ich nicht weis wie ich es in einer Varriablen unterbringen soll.
Es muss doch eine Möglichkeit geben.
PHP:
//jetzt der Aufruf, wo das Template geholt wird und die Platzhalter ersetzt werden.
eval("dooutput(\"".gettemplate("templates/".$multitemplate."/boxentemplates/".$boxen_template_1."/body")."\");");
//Bei eval() muss beachtet werden, dass alle Hochkommas und Variablenzeichen ($) durch ein Backslash markiert werden

Und hier mal der komplette Code so wie er sein sollte:

PHP:
 $info_box_contents = array();
  $row = 0;
  $col = 0;
  while ($default_specials = tep_db_fetch_array($new)) {

    $default_specials['products_name'] = tep_get_products_name($default_specials['products_id']);
    $info_box_contents[$row][$col] =  array('align' => 'center',
                                           'params' => 'class="smallText" width="33%" valign="top"',
                                           'text' =>   '<a href="' . tep_href_link(FILENAME_PRODUCT_INFO, 'products_id=' . $default_specials["products_id"]) . '">' . tep_image(DIR_WS_IMAGES . $default_specials['products_image'], $default_specials['products_name'], SMALL_IMAGE_WIDTH, SMALL_IMAGE_HEIGHT) . '</a><br><a href="' . tep_href_link(FILENAME_PRODUCT_INFO, 'products_id=' . $default_specials['products_id']) . '">' . $default_specials['products_name'] . '</a><br><s>' . $currencies->display_price($default_specials['products_id'],$default_specials['products_price'], tep_get_tax_rate($default_specials['products_tax_class_id'])) . '</s><br><span class="productSpecialPrice">' . $currencies->display_price_nodiscount($default_specials['specials_new_products_price'], tep_get_tax_rate($default_specials['products_tax_class_id'])) . '</span>');
    $col ++;
    if ($col > 2) {
      $col = 0;
     $row ++;
    }
  }
      
                               $inhalt = '?' ; 

//jetzt der Aufruf, wo das Template geholt wird und die Platzhalter ersetzt werden.
eval("dooutput(\"".gettemplate("templates/".$multitemplate."/boxentemplates/".$boxen_template_1."/body")."\");");
//Bei eval() muss beachtet werden, dass alle Hochkommas und Variablenzeichen ($) durch ein Backslash markiert werden

Ich bin sogar bereit für eine Lösung zu bezahlen denn ich rede schon mit meinem Monitor :confused:

Gruss
 
Zurück