Teil von SELFHTML Forum Teil von SELFHTML Forumsarchiv Teil von 2007 Teil von November

SELFHTML Forumsarchiv
Drei Array durchlaufen

Informationsseite
  1. Seite (PHP) Drei Array durchlaufen von Marco, 30. 11. 2007, 14:05
nach unten

Drei Array durchlaufen

Die folgende Nachricht zum Thema stammt von: Marco, 30. 11. 2007, 14:05

Hallo zusammen

Ich habe eine kleine Frage und zwar möchte ich zwei Array durchlaufen und die werte nebeneinander schreiben da ich es
dann per Mail versende.

So sieht es aus:

****************************************************

foreach($_SESSION[produkt] as $produkte) {

  $mitteilung .= "".$produkte."\n";

  }


  foreach($_SESSION[anzahl] as $anzahl) {

  $mitteilung .= "".$anzahl."\n";


  }

foreach($_SESSION[preis] as $preis) {

  $preis_total = $preis + $preis_total;

  $mitteilung .= "".$preis."\n";


  }


****************************************************

Nun sieht es im Mail so aus:

wheelbag-camo
cdx-black
6
1
270
180

Da zuerst alle Produkte aufgelistet werden und dann erst die Anzahl. Möchte aber, dass es so aussieht:

wheelbag-camo 6 270
cdx-black 1 180

wisst Ihr was ich meine?
Freue mich auf Eure Antworten.

Marco



nach obennach unten

Drei Array durchlaufen

Die folgende Nachricht zum Thema stammt von: EKKi, 30. 11. 2007, 14:12

Mahlzeit,

»» wisst Ihr was ich meine?

Verschachtelte Schleifen?


MfG,
EKKi

--
sh:( fo:| ch:? rl:( br:> n4:~ ie:% mo:} va:) de:] zu:) fl:{ ss:) ls:& js:|

nach obennach unten

Drei Array durchlaufen

Die folgende Nachricht zum Thema stammt von: Marco, 30. 11. 2007, 14:14

Hallo EKKI

an das habe ich auch gedacht aber wenn ich das verschachtelt mache, dann läuft es ja z.b. dann die ganzen anzahl durch und dann erst wieder das produkt:

also wenn ich es so mache:


foreach($_SESSION[produkt] as $produkte) {

  $mitteilung .= "".$produkte."\n";


  foreach($_SESSION[anzahl] as $anzahl) {

  $mitteilung .= "".$anzahl."\n";


  }



  }


oder?

nach obennach unten

Drei Array durchlaufen

Die folgende Nachricht zum Thema stammt von: EKKi, 30. 11. 2007, 14:19

Mahlzeit,

»» an das habe ich auch gedacht aber wenn ich das verschachtelt mache, dann läuft es ja z.b. dann die ganzen anzahl durch und dann erst wieder das produkt:

Vielleicht solltest Du dann mal zeigen, was in Deinen Arrays steckt. Mir schwant da nämlich gerade etwas ...


MfG,
EKKi

--
sh:( fo:| ch:? rl:( br:> n4:~ ie:% mo:} va:) de:] zu:) fl:{ ss:) ls:& js:|

nach obennach unten

Drei Array durchlaufen

Die folgende Nachricht zum Thema stammt von: Marco, 30. 11. 2007, 14:26

Hallo Ekki

Also das hier steckt in meinen Arrays

$_SESSION[produkt]:
wheelbag-camo
cdx-black


$_SESSION[anzahl]:

6
1

$_SESSION[preis]:

270
180

nach obennach unten

Drei Array durchlaufen

Die folgende Nachricht zum Thema stammt von: EKKi, 30. 11. 2007, 14:32

Mahlzeit,

»» Also das hier steckt in meinen Arrays

Und was bedeutet das inhaltlich?

Ich sehe da nur 3 voneinander unabhängige Arrays, die irgendwelche zufälligen Werte enthalten.

<herumraten wie="wild">Handelt es sich beim ersten Array vielleicht um bestellte Produkte, beim zweiten um die bestellte Anzahl und beim dritten um den jeweiligen Preis? Sollen die bestellten Produkte, ihre jeweils bestellte Anzahl sowie der entsprechende Preis vielleicht über gleiche Array-Indizes zueinander gehören?</herumraten>

Vielleicht solltest Du Dir nochmal grundsätzlich Gedanken darüber machen, WIE du WELCHE Daten in der Session abspeicherst, so dass Du einfacher und strukturierter darauf zugreifen kannst ...


MfG,
EKKi

--
sh:( fo:| ch:? rl:( br:> n4:~ ie:% mo:} va:) de:] zu:) fl:{ ss:) ls:& js:|

nach obennach unten

Drei Array durchlaufen

Die folgende Nachricht zum Thema stammt von: Marco, 30. 11. 2007, 14:36

Hallo Ekki

Nun es ist genau so wie Du sagst:

es ist das Produkt, Preis und Anzahl.

Möchte es gerne in diesen Arrays lassen einfach nur, dass es nun
im Mail nebeneinander erscheint also nicht erst alle Produkte auflistet und dann erst den Preis und Anzahl.

Sonder das es so kommt:

Produkt - Preis - Anzahl
Produkt - Preis - Anzahl

Und nicht wie momentan:

Produkt
Produkt
Preis
Preis
Anzahl
Anzahl

Weisst Du was ich meine...?

Danke für Deine Bemühungen.
Marco

nach obennach unten

Drei Array durchlaufen

Die folgende Nachricht zum Thema stammt von: EKKi, 30. 11. 2007, 14:46

Mahlzeit,

»» Weisst Du was ich meine...?

Ich weiß, was Du meinst. Und ich rate Dir nochmals davon ab, diesen Weg weiter zu verfolgen. Bei zwei Produkten mit jeweils einer Anzahl und einem Preis mag es vielleicht eine mittelkomplizierte Lösung geben - aber spätestens, wenn da noch ein paar mehr Informationen dazukommen, hier noch ein Array und da noch ein Schleifchen und Du Dich im Spaghetticode vollkommen verheddert hast, wirst Du anfangen, irgendjemanden zu verfluchen.

Und da ich das nicht sein will, werde ich Dir keine Pseudo-Lösung für ein Problem, dessen Ursachen an ganz anderer Stelle liegen, präsentieren ... :-)


MfG,
EKKi

--
sh:( fo:| ch:? rl:( br:> n4:~ ie:% mo:} va:) de:] zu:) fl:{ ss:) ls:& js:|

nach obennach unten

Drei Array durchlaufen

Die folgende Nachricht zum Thema stammt von: Marco, 30. 11. 2007, 14:56

Hallo Ekki

Huii, klingt problematisch mein vorgehen :-)

Wie würdest Du es denn machen? Ein Array wo alles drin steht?
Wenn ja, wie lese ich dass dann aus? Oder was hast Du für einen
Vorschlag welcher professionell ist.

Marco

nach obennach unten

Drei Array durchlaufen

Die folgende Nachricht zum Thema stammt von: EKKi, 30. 11. 2007, 15:02

Mahlzeit,

»» Wie würdest Du es denn machen? Ein Array wo alles drin steht?
»» Wenn ja, wie lese ich dass dann aus? Oder was hast Du für einen
»» Vorschlag welcher professionell ist.

Wie ChrisB und ich schon vorschlugen ...


MfG,
EKKi

--
sh:( fo:| ch:? rl:( br:> n4:~ ie:% mo:} va:) de:] zu:) fl:{ ss:) ls:& js:|

nach obennach unten

Drei Array durchlaufen

Die folgende Nachricht zum Thema stammt von: Marco, 30. 11. 2007, 15:11

Hallo Ekki & Chris

Also ich werde alles in ein Array schreiben nur noch meine letzte
Frage, wie durchlaufe ich dass dann?

$_SESSION[warenkorb][preis]
$_SESSION[warenkorb][produkt]
$_SESSION[warenkorb][anzahl]

wie kann ich dass dann durchlaufen, so geht das ja dann nicht:


foreach($_SESSION[warenkorb] as $produkte) {

  $mitteilung .= "".$produkte."\n";

  }


nach obennach unten

Drei Array durchlaufen

Die folgende Nachricht zum Thema stammt von: EKKi, 30. 11. 2007, 15:28

Mahlzeit,

»» foreach($_SESSION[warenkorb] as $produkte) {
»»
»»   $mitteilung .= "".$produkte."\n";
»»
»»   }

Beispielsweise so:

foreach ($_SESSION["warenkorb"] as $produkte)
{
  $mitteilung .= sprintf("%d %s - Preis: %.2f\n", $produkte["anzahl"], $produkte["produkt"], $produkte["preis"]);
}


MfG,
EKKi

--
sh:( fo:| ch:? rl:( br:> n4:~ ie:% mo:} va:) de:] zu:) fl:{ ss:) ls:& js:|

nach obennach unten

Drei Array durchlaufen

Die folgende Nachricht zum Thema stammt von: Chris©, 30. 11. 2007, 16:30

Hallo Marco,

 foreach($_SESSION['warenkorb']['produkte'] as $key => $produkte)
 {
      $mitteilung .=
      htmlspechialchars($produkte)."\t".
      htmlspechialchars($_SESSION['warenkorb']['menge'][$key])."\t".
      htmlspechialchars($_SESSION['warenkorb']['preis'][$key])."\r\n";)
 }

Je nachdem, wie man die Einfügefunktion für Produkte geschreiben aht, müsste man eventuell noch mit isset() nachfragen, ob die Elemente ['preis'][$key] und ['menge'][$key] vorhanden sind, bevor man drauf zugreift.



LG
Chris©

nach obennach unten

Drei Array durchlaufen

Die folgende Nachricht zum Thema stammt von: Tom, 30. 11. 2007, 15:24

Hello Marco,

»» Ich weiß, was Du meinst. Und ich rate Dir nochmals davon ab, diesen Weg weiter zu verfolgen.

Und ich rate Dir zu, diesen Weg weiterhin konsequent zu verfolgen. Spätestens nach etwas Übung wirst Du erkennen, dass die Datenorganisation für diesen Zweck die geeignetste ist.

Für die Entwicklung der ntwendigen Funktionen stehe ich Dir gerne zur Verfügung.

Mach bitte die Ausgabe, um die ich Dich in http://forum.de.selfhtml.org/?t=162809&m=1059867 gebeten habe, und dann wird Dir (und vielleicht auch einigen Anderen) alles klar werden, wie man es machen kann[1].








[1] Ich sage hier bewusst 'kann', denn man 'muss' überhaupt nicht. Seine Daten kann jeder so organisieren, wie es ihm selber in den Kram passt, aber wenn ich Empfehlungen gebe, dann deshalb, weil ich sie dutzendfach selber ausprobiert habe und sehr wohl gegen andere Möglichkeiten abgewogen habe.




Harzliche Grüße vom Berg
http://bergpost.annerschbarrich.de

Tom
--
Fortschritt entsteht nur durch die Auseinandersetzung der Kreativen
Nur selber lernen macht schlau
Ein Jammer ist auch, dass die Dummen so selbstsicher und die Klugen voller Zweifel sind. Das sollte uns häufiger zweifeln lassen :-)


nach obennach unten

Drei Array durchlaufen

Die folgende Nachricht zum Thema stammt von: EKKi, 30. 11. 2007, 15:33

Mahlzeit,

»» [1] Ich sage hier bewusst 'kann', denn man 'muss' überhaupt nicht. Seine Daten kann jeder so organisieren, wie es ihm selber in den Kram passt, aber wenn ich Empfehlungen gebe, dann deshalb, weil ich sie dutzendfach selber ausprobiert habe und sehr wohl gegen andere Möglichkeiten abgewogen habe.

Es KANN sein, dass diese Art der Strukturierung sinnvoll ist - jedoch NICHT, wenn man per "foreach()" durch die einzelnen Arrays geht und sich nicht mal sicher ist, dass die unterschiedlichen Arrays die gleichen Indizes verwenden (wie es ja in diesem Fall der Fall ist). Dann wirklich DEFINITIV nicht. Glaub mir. :-)


MfG,
EKKi

--
sh:( fo:| ch:? rl:( br:> n4:~ ie:% mo:} va:) de:] zu:) fl:{ ss:) ls:& js:|

nach obennach unten

Drei Array durchlaufen

Die folgende Nachricht zum Thema stammt von: Tom, 30. 11. 2007, 15:39

Hello,

»» Es KANN sein, dass diese Art der Strukturierung sinnvoll ist - jedoch NICHT, wenn man per "foreach()" durch die einzelnen Arrays geht und sich nicht mal sicher ist, dass die unterschiedlichen Arrays die gleichen Indizes verwenden (wie es ja in diesem Fall der Fall ist). Dann wirklich DEFINITIV nicht. Glaub mir. :-)

Deshalb diskutieren wir ja hier.
1. Schritt: Sich Überblick verschaffen
2. Schritt: einen Plan machen
3. Schritt: den Plan konsequent einhalten.

Dann geht auch nichts schief.




Harzliche Grüße vom Berg
http://bergpost.annerschbarrich.de

Tom
--
Fortschritt entsteht nur durch die Auseinandersetzung der Kreativen
Nur selber lernen macht schlau
Ein Jammer ist auch, dass die Dummen so selbstsicher und die Klugen voller Zweifel sind. Das sollte uns häufiger zweifeln lassen :-)


nach obennach unten

Drei Array durchlaufen

Die folgende Nachricht zum Thema stammt von: ChrisB, 30. 11. 2007, 14:35

Hi,

»» Also das hier steckt in meinen Arrays
»»
»» $_SESSION[produkt]:
»» wheelbag-camo
»» cdx-black

Und der Index ist nummerisch (nullbasiert, fortlaufend)?
Dann verwende einfach eine For-Schleife, und greife ueber den Index auf die Array-Elemente zu.

MfG ChrisB

nach obennach unten

Drei Array durchlaufen

Die folgende Nachricht zum Thema stammt von: Marco, 30. 11. 2007, 14:37

Hallo ChrisB

Leider ist die Index nicht fortlaufend da es auch sein kann, dass ein Produkt gelöscht wurde bei der Bestellung dann wäre der index nicht mehr schön der Reihe nach! An die Idee habe ich auch schon
gedacht aber geht in diesem Fall leider nicht.

Sonst noch eine Idee?

Marco

nach obennach unten

Drei Array durchlaufen

Die folgende Nachricht zum Thema stammt von: ChrisB, 30. 11. 2007, 14:39

Hi,

»» Sonst noch eine Idee?

Vernuenftige Datenstruktur ueberlegen. Die vorliegende klingt, wie EKKi auch schon anmerkte, nach ziemlichem Kokolores.

MfG ChrisB

nach obennach unten

Drei Array durchlaufen

Die folgende Nachricht zum Thema stammt von: Marco, 30. 11. 2007, 14:41

schon?

wieso preis, produkt und anzahl ist einfach je in einem separaten array. was ist daran soooo verkehrt?

wie wäre es denn besser?

marco

nach obennach unten

Drei Array durchlaufen

Die folgende Nachricht zum Thema stammt von: ChrisB, 30. 11. 2007, 14:47

Hi,

»» wieso preis, produkt und anzahl ist einfach je in einem separaten array. was ist daran soooo verkehrt?
»»
»» wie wäre es denn besser?

Na bspw. so, dass du preis, produkt und anzahl in einem Unter-Array hast.

$data = array(
  array('preis' => 225.79, 'produkt' => 4711, 'anzahl' => 2),
  array('preis' => 113.84, 'produkt' => 4712, 'anzahl' => 9),
  ...
);


MfG ChrisB

nach obennach unten

Drei Array durchlaufen

Die folgende Nachricht zum Thema stammt von: EKKi, 30. 11. 2007, 14:49

Mahlzeit,

»» wieso preis, produkt und anzahl ist einfach je in einem separaten array. was ist daran soooo verkehrt?

So ziemlich alles.


»» wie wäre es denn besser?

Beispielhaft:

$bestellung[] = Array("produkt" => $produkt, "anzahl" => $anzahl, "preis" => $preis);

usw.

So hast Du immer eine unzweifelhafte Zuordnung, was zueinander gehört. Allerdings würde ich an Deiner Stelle in jedem Fall dem Ratschlag von ChrisB folgen und eine vernüftigen Daten(bank)struktur verwenden.


MfG,
EKKi

--
sh:( fo:| ch:? rl:( br:> n4:~ ie:% mo:} va:) de:] zu:) fl:{ ss:) ls:& js:|

nach obennach unten

Drei Array durchlaufen

Die folgende Nachricht zum Thema stammt von: Tom, 30. 11. 2007, 15:07

Hello,

»» »» wieso preis, produkt und anzahl ist einfach je in einem separaten array. was ist daran soooo verkehrt?
»»
»» So ziemlich alles.
»»
»» »» wie wäre es denn besser?
»»
»» Beispielhaft:
»»
»» $bestellung[] = Array("produkt" => $produkt, "anzahl" => $anzahl, "preis" => $preis);
»»
»» So hast Du immer eine unzweifelhafte Zuordnung, was zueinander gehört. Allerdings würde ich an Deiner Stelle in jedem Fall dem Ratschlag von ChrisB folgen und eine vernüftigen Daten(bank)struktur verwenden.

Das ist für die Bindung vollkommen unerheblich, _wie_ man seine zusammngehörogen Daten bindet, Hauptsache, man hat es sich als Kommentar dazugeschreiben, ob man es von "links nach schräg" oder von  "hinten nach oben" (oder wie war der Witz hier neulich?) gemacht hat. Es muss nur reproduzierbar sein.

Die Vorteile gegenüber dem einen einzigen Nachteil beim Löschen, der ja bei Anwendung meiner Löschfunktion (siehe Archiv) gar keiner ist, habe ich in http://forum.de.selfhtml.org/?t=162809&m=1059855 angedeutet.

Es ist alles nur eine Frage des Vorstellungsvermögens.



Da "Arrays" in PHP in Wirklichkeit sowieso keine Arrays sind (geschlossene Datenstruktur, bei der die (physische) Position des Datenelementes innerhalb der Speicherstruktur über den Index _berechenbar_ ist), sondern verkettete "Speicherelmente" (mMn nach in unspezifizierter Baumstruktur, aber darüber will ich heute nicht schon wieder streiten), ist es also sowieso egal, ob die logische Bindung spaltenorientiert oder zeilenorientiert geschieht. Ohne die implemnetierten Zugriffsmethoden für das Arrayelement kommt man sowie nicht heran an das Element.



Harzliche Grüße vom Berg
http://bergpost.annerschbarrich.de

Tom
--
Fortschritt entsteht nur durch die Auseinandersetzung der Kreativen
Nur selber lernen macht schlau
Ein Jammer ist auch, dass die Dummen so selbstsicher und die Klugen voller Zweifel sind. Das sollte uns häufiger zweifeln lassen :-)


nach obennach unten

Drei Array durchlaufen

Die folgende Nachricht zum Thema stammt von: Tom, 30. 11. 2007, 14:47

Hello,

»» Vernuenftige Datenstruktur ueberlegen. Die vorliegende klingt, wie EKKi auch schon anmerkte, nach ziemlichem Kokolores.

Eine Datenstruktur in der Form

$_SESSION['basket']['produkt'] = array();
$_SESSION['basket']['menge'] = array();
$_SESSION['basket']['preis'] = array();
$_SESSION['basket']['geweicht'] = array();

mit korrespondieremdem Index ist durchaus kein Kokolores.
Man muss dann eben zum Ändern oder Löschen nur eine komplette Methode erstellen und kann nicht einfach sagen "unset(nummer x)" sondern muss eben ein unset in allen vorhandenen Zweigen durchführen. Dafür schreibt man sich aber nur einmal eine universelle Funktion (die ich hier übrigens schon x-mal gepostet habe, weil sie allgemeingültig ist) und das war's.

Für's Insert, Update und Darstellung benötigt man ja sowieso jeweils eine Methode. Das bedeutet also keinen Mehraufwand. Es ist somit egal, ob das Arrays zeilenoroentiert (Datensätze sind gebunden) oder spaltenorientiert (Spalten sind gebunden) aufgebaut ist.

Der Vorteil der Spaltenorientierung ist die Anwendbarkeit der normalen Arrayfunktionen für Sortierung, Summierung, Mittelwert, suchen, usw.






Harzliche Grüße vom Berg
http://bergpost.annerschbarrich.de

Tom
--
Fortschritt entsteht nur durch die Auseinandersetzung der Kreativen
Nur selber lernen macht schlau
Ein Jammer ist auch, dass die Dummen so selbstsicher und die Klugen voller Zweifel sind. Das sollte uns häufiger zweifeln lassen :-)


nach obennach unten

Drei Array durchlaufen

Die folgende Nachricht zum Thema stammt von: ChrisB, 30. 11. 2007, 14:50

Hi,

»» Eine Datenstruktur in der Form
»»
»» $_SESSION['basket']['produkt'] = array();
»» $_SESSION['basket']['menge'] = array();
»» $_SESSION['basket']['preis'] = array();
»» $_SESSION['basket']['geweicht'] = array();
»»
»» mit korrespondieremdem Index ist durchaus kein Kokolores.

M.E. schon.
Die korrespondierenden Daten werden durch nichts ausser ihre Position im jeweiligen Unterarray in Verbindung gehalten.

Nur mal bspw. irgendwo unbedacht eines der Unter-Arrays sortiert - und schon ist der Zusammenhang zu den anderen Daten beim Teufel. Happy Fehlersuching ...

»» Der Vorteil der Spaltenorientierung ist die Anwendbarkeit der normalen Arrayfunktionen für Sortierung, Summierung, Mittelwert, suchen, usw.

Ja, dass du davon ein eifriger Verfechter bist, weiss ich :-)

MfG ChrisB

nach obennach unten

Drei Array durchlaufen

Die folgende Nachricht zum Thema stammt von: Tom, 30. 11. 2007, 14:58

Hello,

»» »» Eine Datenstruktur in der Form
»» »»
»» »» $_SESSION['basket']['produkt'] = array();
»» »» $_SESSION['basket']['menge'] = array();
»» »» $_SESSION['basket']['preis'] = array();
»» »» $_SESSION['basket']['geweicht'] = array();
»» »»
»» »» mit korrespondieremdem Index ist durchaus kein Kokolores.
»»
»» M.E. schon.
»» Die korrespondierenden Daten werden durch nichts ausser ihre Position im jeweiligen Unterarray in Verbindung gehalten.

Falsch! Sie werden durch ihren korrespondierenden Index gebunden. Aber das schreib ich ja oben.


»» Nur mal bspw. irgendwo unbedacht eines der Unter-Arrays sortiert - und schon ist der Zusammenhang zu den anderen Daten beim Teufel. Happy Fehlersuching ...

Unbedacht sortiert ja uch kein Programmierer und der User der Seite kommt ans Programm nicht ran, oder? Bei der Sortierung eiens PHP-Arrays muss der Index nicht verändert werden. Es wird nur die Position des Elementes in seiner verketteten Liste verändert.

»» »» Der Vorteil der Spaltenorientierung ist die Anwendbarkeit der normalen Arrayfunktionen für Sortierung, Summierung, Mittelwert, suchen, usw.





Harzliche Grüße vom Berg
http://bergpost.annerschbarrich.de

Tom
--
Fortschritt entsteht nur durch die Auseinandersetzung der Kreativen
Nur selber lernen macht schlau
Ein Jammer ist auch, dass die Dummen so selbstsicher und die Klugen voller Zweifel sind. Das sollte uns häufiger zweifeln lassen :-)


nach obennach unten

Drei Array durchlaufen

Die folgende Nachricht zum Thema stammt von: Chris©, 30. 11. 2007, 16:37

Hallo ChrisB, hier schreibt ChrisF :-)

»» »» Eine Datenstruktur in der Form
»» »» mit korrespondieremdem Index ist durchaus kein Kokolores.
»»
»» M.E. schon.
»» Die korrespondierenden Daten werden durch nichts ausser ihre Position im jeweiligen Unterarray in Verbindung gehalten.

Sie werden durch ihren Index in Verbindung gehalten. Das ist dasselbe, wie die ID in einer Datenbank.

»» Nur mal bspw. irgendwo unbedacht eines der Unter-Arrays sortiert - und schon ist der Zusammenhang zu den anderen Daten beim Teufel. Happy Fehlersuching ...

Unbedacht sollte ein Programmierer auch nichts tun. Und bei einer bedachten Sortierung bleibt der Index erhalten.


LG
Chris©

nach obennach unten

Drei Array durchlaufen

Die folgende Nachricht zum Thema stammt von: EKKi, 30. 11. 2007, 14:58

Mahlzeit,

»» Eine Datenstruktur in der Form
»»
»» $_SESSION['basket']['produkt'] = array();
»» $_SESSION['basket']['menge'] = array();
»» $_SESSION['basket']['preis'] = array();
»» $_SESSION['basket']['geweicht'] = array();
»»
»» mit korrespondieremdem Index ist durchaus kein Kokolores.

IMHO doch. Produkt, Anzahl, Preis usw. sind Eigenschaften einer Position der Bestellung. Es gibt keinen ersichtlichen Grund, diese zu einer Position gehörenden Informationen nicht bei dieser Positionen, sondern in vollkommen voneinander unabhängigen Datenstrukturen zu speichern. Die Gefahr, die Zuordnung untereinander zu verlieren, ist - wie ChrisB schrieb - viel zu groß.


MfG,
EKKi

--
sh:( fo:| ch:? rl:( br:> n4:~ ie:% mo:} va:) de:] zu:) fl:{ ss:) ls:& js:|

nach obennach unten

Drei Array durchlaufen

Die folgende Nachricht zum Thema stammt von: Tom, 30. 11. 2007, 15:18

Hello,

»» »» Eine Datenstruktur in der Form
»» »»
»» »» $_SESSION['basket']['produkt'] = array();
»» »» $_SESSION['basket']['menge'] = array();
»» »» $_SESSION['basket']['preis'] = array();
»» »» $_SESSION['basket']['geweicht'] = array();
»» »»
»» »» mit korrespondieremdem Index ist durchaus kein Kokolores.
»»
»» IMHO doch. Produkt, Anzahl, Preis usw. sind Eigenschaften einer Position der Bestellung. Es gibt keinen ersichtlichen Grund, diese zu einer Position gehörenden Informationen nicht bei dieser Positionen, sondern in vollkommen voneinander unabhängigen Datenstrukturen zu speichern.

Die Datenstrukturen sind nicht voneinander unabhöngig, sondern stehen über ihre Indexe in relation zueinander. Ein Ausflug in die Datenbankwelt solte Dir das eigentlich verdeutlichen.

»» Die Gefahr, die Zuordnung untereinander zu verlieren, ist - wie ChrisB schrieb - viel zu groß.

Die Gefahr besteht bei ordentlichen Programmieren, die etwas von ihrem Handwerk verstehen, _überhaupt_ _nicht_.

Im Übrigen werden an allen möglichen Stellen in PHP die Arrays (teilweise auf Wunsch) genauso "spaltenorientiert" zur Verfügung gestellt. ($_FILES, preg_match_all, ...)  Das hat mehrere gute Gründe. Einer davon ist die einfache Möglichkeit des Hinzufügens von Eigenschaften, ein weiterer  ist, dass sie so herum i.d.R. weniger Speicher benötigen. (Mach mal einen Versuch mit serialize(), dann wirds Du das sehen).

Nur, weil Du diese Denkweise der Datenorganisation bisher nicht kennst, weil Du wahrscheinlich Arrays  nur in ihrer klassischen Funktion kennengelernt hast bisher, ist mein Ansatz nicht falsch.

Aber das haben schon wesentlich fortgeschreittenere Leute hier nicht verstehen wollen bisher. das muss auch jeder selber wissen, wie er sich das Leben schwer macht mit den Arrays. Ich habe jedenfalls schon vor Längerem erkannt, dass es so herum (bei ein bisschen mehr Überlegung bei der Planung der Datenstrukturen) nur Vorteile hat gegenüber der anderen Variante.

Ich möchte darüber auf dieser Ebene auch nicht weiter diskutieren. Bitte nicht beleidigt sein, die Diskussionen dazu finden sich alle schon im Archiv. An einer Diskussion über die mögliche Weiterentwicklung der Ideen habe ich aber immer Interesse.





Harzliche Grüße vom Berg
http://bergpost.annerschbarrich.de

Tom
--
Fortschritt entsteht nur durch die Auseinandersetzung der Kreativen
Nur selber lernen macht schlau
Ein Jammer ist auch, dass die Dummen so selbstsicher und die Klugen voller Zweifel sind. Das sollte uns häufiger zweifeln lassen :-)


nach obennach unten

Drei Array durchlaufen

Die folgende Nachricht zum Thema stammt von: EKKi, 30. 11. 2007, 15:24

Mahlzeit,

»» Aber das haben schon wesentlich fortgeschreittenere Leute hier nicht verstehen wollen bisher.

...


MfG,
EKKi

--
sh:( fo:| ch:? rl:( br:> n4:~ ie:% mo:} va:) de:] zu:) fl:{ ss:) ls:& js:|

nach obennach unten

Drei Array durchlaufen

Die folgende Nachricht zum Thema stammt von: Tom, 30. 11. 2007, 15:27

Hello,

»» »» Aber das haben schon wesentlich fortgeschreittenere Leute hier nicht verstehen wollen bisher.
»»
»» ...

*grins*

Gehörst Du auch zu den Leuten, die sagen "Millionen Fliegen können nicht irren"?





Harzliche Grüße vom Berg
http://bergpost.annerschbarrich.de

Tom
--
Fortschritt entsteht nur durch die Auseinandersetzung der Kreativen
Nur selber lernen macht schlau
Ein Jammer ist auch, dass die Dummen so selbstsicher und die Klugen voller Zweifel sind. Das sollte uns häufiger zweifeln lassen :-)


nach obennach unten

Drei Array durchlaufen

Die folgende Nachricht zum Thema stammt von: EKKi, 30. 11. 2007, 15:30

Mahlzeit,

»» Gehörst Du auch zu den Leuten, die sagen "Millionen Fliegen können nicht irren"?

Nein. Ich frage mich nur gerade, wann Deine Nasenschleimhaut abgestorben ist. Immerhin scheinst Du - Deiner eigenen unmaßgeblichen Meinung nach - ja der einzige hier im Forum zu sein, der die Weisheit mit Löffeln zu sich genommen hat ... ;-)


MfG,
EKKi

--
sh:( fo:| ch:? rl:( br:> n4:~ ie:% mo:} va:) de:] zu:) fl:{ ss:) ls:& js:|

nach obennach unten

Drei Array durchlaufen

Die folgende Nachricht zum Thema stammt von: Tom, 30. 11. 2007, 15:36

Hello,

»» »» Gehörst Du auch zu den Leuten, die sagen "Millionen Fliegen können nicht irren"?
»»
»» Nein. Ich frage mich nur gerade, wann Deine Nasenschleimhaut abgestorben ist. Immerhin scheinst Du - Deiner eigenen unmaßgeblichen Meinung nach - ja der einzige hier im Forum zu sein, der die Weisheit mit Löffeln zu sich genommen hat ... ;-)

Schreint das jetzt nur so, oder wirst Du jetzt ausfallend?



Harzliche Grüße vom Berg
http://bergpost.annerschbarrich.de

Tom
--
Fortschritt entsteht nur durch die Auseinandersetzung der Kreativen
Nur selber lernen macht schlau
Ein Jammer ist auch, dass die Dummen so selbstsicher und die Klugen voller Zweifel sind. Das sollte uns häufiger zweifeln lassen :-)


nach obennach unten

Drei Array durchlaufen

Die folgende Nachricht zum Thema stammt von: EKKi, 30. 11. 2007, 15:51

Mahlzeit,

»» Schreint das jetzt nur so, oder wirst Du jetzt ausfallend?

Das scheint nur so ... außerdem hab ich nicht angefangen. ;-)


MfG,
EKKi

--
sh:( fo:| ch:? rl:( br:> n4:~ ie:% mo:} va:) de:] zu:) fl:{ ss:) ls:& js:|

nach obennach unten

Drei Array durchlaufen

Die folgende Nachricht zum Thema stammt von: Chris©, 30. 11. 2007, 16:42

Hallo Ecki,

»» »» Gehörst Du auch zu den Leuten, die sagen "Millionen Fliegen können nicht irren"?
»»
»» Nein. Ich frage mich nur gerade, wann Deine Nasenschleimhaut abgestorben ist. Immerhin scheinst Du - Deiner eigenen unmaßgeblichen Meinung nach - ja der einzige hier im Forum zu sein, der die Weisheit mit Löffeln zu sich genommen hat ... ;-)

Da besteht wohl keine Gefahr. DEIN Löffel ist auch ganz schön groß. Nur hast Du scheinbar nicht die Weishait auf Deinem Teller, sondern Agressivität.

Nur weil jemand mit gut dargelegten Argumenten und guten Beispielen eine andere Meinung vertritt, als Du es tust, musst Du nicht agressiv werden. Du bist der jenige, der hier nur schwafelt: Gefahr droht, Zusammenhang geht verloren, usw.

Aber Du belegst an keiner einzigen Stelle, wodurch.



LG
Chris©

nach obennach unten

Drei Array durchlaufen

Die folgende Nachricht zum Thema stammt von: Chris©, 30. 11. 2007, 16:39

Hallo Ecki,

»» »» mit korrespondieremdem Index ist durchaus kein Kokolores.
»»
»» IMHO doch.
...
»» Die Gefahr, die Zuordnung untereinander zu verlieren, ist - wie ChrisB schrieb - viel zu groß.

Welche Gefahr? Woher sollte da eine Gefahr kommen?


LG
Chris©

nach obennach unten

Drei Array durchlaufen

Die folgende Nachricht zum Thema stammt von: EKKi, 30. 11. 2007, 14:52

Mahlzeit,

»» Leider ist die Index nicht fortlaufend da es auch sein kann, dass ein Produkt gelöscht wurde bei der Bestellung dann wäre der index nicht mehr schön der Reihe nach!

Und da hätten wir schon das erste der Probleme, die ich hier angedeutet habe ... ich kann Dir nur nochmals raten: verlasse schleunigst den von Dir eingeschlagenen Weg und verlasse Dich nicht auf derartig kaputte Daten"strukturen" ...


MfG,
EKKi

--
sh:( fo:| ch:? rl:( br:> n4:~ ie:% mo:} va:) de:] zu:) fl:{ ss:) ls:& js:|

nach obennach unten

Drei Array durchlaufen

Die folgende Nachricht zum Thema stammt von: Chris©, 30. 11. 2007, 16:33

Hallo Marco,

»» Leider ist die Index nicht fortlaufend da es auch sein kann, dass ein Produkt gelöscht wurde bei der Bestellung dann wäre der index nicht mehr schön der Reihe nach! An die Idee habe ich auch schon
»» gedacht aber geht in diesem Fall leider nicht.

Dass der Index nicht fortlaufend ist, macht nichts. Wichtig ist nur, dass er gleich ist für produkt[$i], menge[$i] und preis[$i]




LG
Chris©

nach obennach unten

Drei Array durchlaufen

Die folgende Nachricht zum Thema stammt von: Chris©, 30. 11. 2007, 16:22

»» Mahlzeit,
»»
»» »» wisst Ihr was ich meine?
»»
»» Verschachtelte Schleifen?

Da muss gar nichts verschachtelt werden, sondern einfach nur eine Ausgabfunktion erstellt werden, die die Daten über den Index aus den drei Spalten zusammenstellt.


LG
Chris©

nach obennach unten

Drei Array durchlaufen

Die folgende Nachricht zum Thema stammt von: Marco, 30. 11. 2007, 16:25

Hallo Chris©

Wie genau muss ich das machen?

Danke für Dein Feedback.

Marco

nach obennach unten

Drei Array durchlaufen

Die folgende Nachricht zum Thema stammt von: Chris©, 30. 11. 2007, 16:45

Hallo Marco,

»» Wie genau muss ich das machen?

Das habe ich Dir schon irgendwo anders in diesem Thread als fertige Funktion geschrieben. Ich komm nur gerade mit der Sortierung des Threads nicht klar. Die muss ich erstmal ändern. Bin gleich weider da :-)



LG
Chris©

nach obennach unten

Drei Array durchlaufen

Die folgende Nachricht zum Thema stammt von: Tom, 30. 11. 2007, 14:38

Hello,


»» Da zuerst alle Produkte aufgelistet werden und dann erst die Anzahl. Möchte aber, dass es so aussieht:
»»
»» wheelbag-camo 6 270
»» cdx-black 1 180

Das hängt davon ab, ob die Indices der Arrayelemente korrespondieren, oder nur die Position der Elemente in den Arrays.

Wie sind die Arrays denn aufgebaut?



Harzliche Grüße vom Berg
http://bergpost.annerschbarrich.de

Tom
--
Fortschritt entsteht nur durch die Auseinandersetzung der Kreativen
Nur selber lernen macht schlau
Ein Jammer ist auch, dass die Dummen so selbstsicher und die Klugen voller Zweifel sind. Das sollte uns häufiger zweifeln lassen :-)


nach obennach unten

Drei Array durchlaufen

Die folgende Nachricht zum Thema stammt von: Marco, 30. 11. 2007, 14:43

Hallo Tom

Danke für Dein Feedback. Verstehe Deine Frage nicht ganz.

Was genau meinst Du?

Marco

nach obennach unten

Drei Array durchlaufen

Die folgende Nachricht zum Thema stammt von: Tom, 30. 11. 2007, 14:53

Hello Marco,

»» Danke für Dein Feedback. Verstehe Deine Frage nicht ganz.
»»
»» Was genau meinst Du?

siehe hierzu auch http://forum.de.selfhtml.org/?t=162809&m=1059855

lass Dir die drei oder vier Arrays, die Du mit Musterdaten gefüllt hast, bitte mal anzeigen und poste uns das Ergebnis:


echo "<pre>\n";

echo htmlspecialchars(print_r($_SESSION['produkt'],1));
echo htmlspecialchars(print_r($_SESSION['anzahl'],1));
echo htmlspecialchars(print_r($_SESSION['preis'],1));

echo "</pre>\n";


Dann sollte es Dir aber schon klar werden, was gemeint ist.

Ich würde übrigens noch eine Dimension einfügen in den Aufbau des Arrays, also

         nicht      $_SESSION['produkt']

         sondern    $_SESSION['basket']['produkt']

Dann kann bei Bedarf der komplette Wartenkorb auf einmal gelsöcht werden.

Und nicht die Quotes vergessen für die Elementbezeichner der Arrays, es sei denn, es handelt sich bei 'produkt', 'menge' und 'preis' um Konstanten, die Du irgendwo dfiniert hast.




Harzliche Grüße vom Berg
http://bergpost.annerschbarrich.de

Tom
--
Fortschritt entsteht nur durch die Auseinandersetzung der Kreativen
Nur selber lernen macht schlau
Ein Jammer ist auch, dass die Dummen so selbstsicher und die Klugen voller Zweifel sind. Das sollte uns häufiger zweifeln lassen :-)


nach oben
Teil von SELFHTML Forum Teil von SELFHTML Forumsarchiv Teil von 2007 Teil von November

© 1998-2006 Seite Impressum, Software: Classic Forum