![]() |
[PHP] Array mit einer Art Index ansprechen
Hi,
ich muss mal wieder ein wenig mit PHP nerven. ;) Im Folgenden ist ein Code-Ausschnitt zu sehen. Dort benötige ich in der foreach-Schleife den Wert der Spalte 'prod_img' aus dem $arr_products_single_data-Array mit der zugehörigen 'prod_id'. Das Array sieht so aus (es wird später deutlich mehr Einträge enthalten):
Code:
Anhand der 'prod_id', die ich habe, möchte ich nun auf diesen Array-Eintrag zugreifen können, nur weiß ich absolut nicht, wie ich das bewerkstelligen soll. Schön wäre natürlich etwas wie
Array ( [prod_id] => 14 [prod_img] => product_1.jpg )
Code:
Natürlich geht es so nicht, da sist klar. Und das Array kann ich nicht ändern, das muss so aufgebaut sein, wie es aktuell der Fall ist.
$arr_products_single_data[14]
Hier nun der Code. Mein Problem liegt in der Zeile, in der ich 'IMAGE' das Bild zuweisen muss:
Code:
Ich könnte natürlich auch die SQL-Abfrage für 'prod_img' in die Schleife packen, doch ist das ganze dann nicht mehr so performant, denke ich mal, wenn ich hunderte EInträge in der Datenbank habe. Wie würdet ihr das lösen?
[color=#11117F]$arr_products_single_data[/color] = [color=#11117F]get_sql_array[/color]([color=#E60000]"SELECT prod_id, prod_img FROM "[/color] .
[color=#11117F]PRODUCTS_DATA[/color] . [color=#E60000]" WHERE prod_cat_id = "[/color] . [color=#11117F]sqlval[/color]([color=#11117F]$id[/color]), 0); [color=#11117F]$arr_products[/color] = [color=#11117F]get_sql_array[/color]([color=#E60000]"SELECT id, prod_title, prod_subtitle, prod_short_desc FROM "[/color] . [color=#11117F]PRODUCTS[/color] . [color=#E60000]" WHERE id = "[/color] . [color=#11117F]sqlval[/color]([color=#11117F]$arr_products_single_data[/color][[color=#E60000]'prod_id'[/color]]) . [color=#E60000]" AND lang_id = "[/color] . [color=#11117F]sqlval[/color]([color=#11117F]$site_lang[/color][[color=#E60000]'id'[/color]])); [color=#11117F]$prod_cat[/color] = [color=#11117F]get_sql_array[/color]([color=#E60000]"SELECT id, prod_cat_title, prod_cat_description FROM "[/color] . [color=#11117F]PRODUCT_CATEGORIES[/color] . [color=#E60000]" WHERE id = "[/color] . [color=#11117F]sqlval[/color]([color=#11117F]$id[/color]) . [color=#E60000]" AND lang_id = "[/color] . [color=#11117F]sqlval[/color]([color=#11117F]$site_lang[/color][[color=#E60000]'id'[/color]]), 0); [color=#FFA200]// show each product[/color] [color=#2B8E10]foreach[/color] ([color=#11117F]$arr_products as $product[/color]) { [color=#11117F]$template[/color]->[color=#11117F]set_block[/color]([color=#E60000]'products_overview'[/color], [color=#2B8E10]array[/color]( [color=#E60000]'IMAGE'[/color] => [color=#FFA200]// <== Hier ;-)[/color] [color=#E60000]'TITLE'[/color] => [color=#11117F]$product[/color][[color=#E60000]'prod_title'[/color]], [color=#E60000]'SUBTITLE'[/color] => [color=#11117F]$product[/color][[color=#E60000]'prod_subtitle'[/color]], [color=#E60000]'SHORT_DESC'[/color] => [color=#11117F]nl2br[/color]([color=#11117F]$product[/color][[color=#E60000]'prod_short_desc'[/color]]), [color=#E60000]'PROD_LINK'[/color] => [color=#11117F]$config_main[/color][[color=#E60000]'domain'[/color]] . [color=#E60000]'index.php?page=product_show&id='[/color] . [color=#11117F]$product[/color][[color=#E60000]'id'[/color]] . [color=#11117F]$link_lang_param[/color] ) ); } |
Re: [PHP] Array mit einer Art Index ansprechen
Hmm...mit einer Schleife:
Code:
;)
$newar = array();
foreach ($ar as $id => $val) { $newar[$id] = $val; } Greetz alcaeus |
Re: [PHP] Array mit einer Art Index ansprechen
Hi
Zitat:
|
Re: [PHP] Array mit einer Art Index ansprechen
Zitat:
Ausserdem hatte mein Code einen Fehler :oops:
Code:
Greetz
$newar = array();
for ($i = 0, $count = count($ar); $i < $count; $i++) { $newar[$ar[$i]['prod_id']] = $ar[$i]; } alcaeus |
Re: [PHP] Array mit einer Art Index ansprechen
Zitat:
|
Re: [PHP] Array mit einer Art Index ansprechen
Zitat:
Greetz alcaeus |
Re: [PHP] Array mit einer Art Index ansprechen
Zitat:
Wenn das mit der Datenbank wirklich nichts ausmacht (Ich möchte keine Page-Gen-Time über 0.006 Sekunden, die gefallen mir grad so :mrgreen: ), dann werde ich das so machen, danke. :) |
Re: [PHP] Array mit einer Art Index ansprechen
Zitat:
SQL-Code:
Greetz
LIMIT
alcaeus |
Re: [PHP] Array mit einer Art Index ansprechen
Ja, das ist mir klar. Würde ich es mit einer Datenbankabfrage lösen, kann ich ja direkt in der foreach-Schleife 'prod_img' ermitteln. Dann habe ich halt pro Schleifen durchlauf nochmals eine Datenbankabfrage. Wenn das nichts ausmacht (ich habe keine Ahnung, wie robust so 'ne Datenbank ist), dann ist das wohl die beste möglichkeit. LIMIT kommt dann zur Abfrage von $arr_products, das würde dann eigentlich passen.
|
Re: [PHP] Array mit einer Art Index ansprechen
Ähm, bitte keine Datenbankabfragen (zumindest keine SELECTs) in Schleifen, das ist nicht gut... :stupid: Verbinde die verschiedenen Tabellen mit JOINs. :zwinker:
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 10:31 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz