Thomas: array-daten &-namen auslesen...

Hi!

ich hab eine Session, die (wenn das script laufen soll) ca. so aussieht (is nicht von mir programmiert, aber nicht leicht änderbar):

...
$_SESSION['contents']['31{4}3{8}5'] = array();
$_SESSION['contents']['31{4}3{8}5']['quantity'] = 1;
$_SESSION['contents']['31{4}3{8}5']['attributes'] = array();
$_SESSION['contents']['31{4}3{8}5']['attributes']['4'] = 3;
$_SESSION['contents']['31{4}3{8}5']['attributes']['8'] = 5;

$_SESSION['contents']['13{3}2{7}2'] = array();
....

jetzt will ich das in eine Mysql-Tabelle schreiben lassen:

foreach($_SESSION['cart']['contents'] as $product_image_save) {
      $query = 'insert into orders id values '.$id;

Das is natürlich stark gekürzt (es werden in die Tabelle natürlich viel mehr Daten gespeichert, die sind aber für meine Frage unwichtig):

Also wie erhalte ich die $id, das wäre die erste Nummer des Array-Namens
=> bei ['31{4}3{8}5'] is das 31

Kann mir da jemand helfen?

THX
Thomas

  1. Hallo

    ich hab eine Session, die (wenn das script laufen soll) ca. so aussieht (is nicht von mir programmiert, aber nicht leicht änderbar):

    ...
    $_SESSION['contents']['31{4}3{8}5'] = array();
    $_SESSION['contents']['31{4}3{8}5']['quantity'] = 1;
    $_SESSION['contents']['31{4}3{8}5']['attributes'] = array();
    $_SESSION['contents']['31{4}3{8}5']['attributes']['4'] = 3;
    $_SESSION['contents']['31{4}3{8}5']['attributes']['8'] = 5;
    ....

    Nunja, sieht verwirrend aus.

    foreach($_SESSION['cart']['contents'] as $product_image_save) {

    nanu, wo kommt jetzt das ['cart'] her?

    Abgesehen von der Vierdimansionalität, in der _ich_ mich wahrscheinlich verirren täte, kannst du eine foreach-Schleife anweisen, den Key eines Arrayelements auszugeben.

    foreach ($bla as $key=>$$val)  
       {  
       echo $key.": ".$val."\n";  
       }
    

    Ansonsten fällt mir da noch die Funktion key() ein.

    Tschö, Auge

    --
    Die Musik drückt aus, was nicht gesagt werden kann und worüber es unmöglich ist zu schweigen.
    (Victor Hugo)
    Veranstaltungsdatenbank Vdb 0.1
    1. echo $begrüßung;

      $_SESSION['contents']['31{4}3{8}5'] = array();
      $_SESSION['contents']['31{4}3{8}5']['quantity'] = 1;
      $_SESSION['contents']['31{4}3{8}5']['attributes'] = array();
      $_SESSION['contents']['31{4}3{8}5']['attributes']['4'] = 3;
      $_SESSION['contents']['31{4}3{8}5']['attributes']['8'] = 5;
      ....
      Abgesehen von der Vierdimansionalität, in der _ich_ mich wahrscheinlich verirren täte, kannst du eine foreach-Schleife anweisen, den Key eines Arrayelements auszugeben.

      So wie es aussieht, handelt es sich nicht um vier Dimensionen sondern um eine (unregelmäßige) Baumstruktur mit einer Verschachtelungstiefe von maximal 4 Levels (wenn man das cart unbeachtet lässt). quantity beispielsweise befindet sich in Level 3 und hat nur einen skalaren Wert.

      Ansonsten fällt mir da noch die Funktion key() ein.

      key() eignet sich nicht für das Arbeiten mit foreach. für key() wird das Weitersetzen des internen Array-Zeigers benötigt (next()). foreach kümmert sich aber nicht um diesen.

      echo "$verabschiedung $name";

      1. Hi nochmal!

        Danke für den Tipp mit key, das werd ich dann einfach umprogrammieren...

        Ich wollte das ['cart'] rauslöschen da ich dachte dass es unwichtig is, hab jedoch jetzt noch ein problem entdeckt :-(

        ['cart'] ist ein object und kein array! Wie kann ich denn dann die ['contents'] auslesen wenn ['cart'] ein object is?

        thx
        Thomas

        1. echo $begrüßung;

          ['cart'] ist ein object und kein array! Wie kann ich denn dann die ['contents'] auslesen wenn ['cart'] ein object is?

          So wie bei Objekten üblich mit der Notation $object->property statt $array['key'].

          echo "$verabschiedung $name";

  2. Hallo Thomas.

    wie erhalte ich aus dem string '31{1}1{2}6{100}12' nur den Wert VOR der ersten geschwungenen Klammer => 31
    anderes Bsp. '4{523}32{5}24' => 4

    Recht einfach, indem du mittels strpos nach der ersten geschweiften Klammer suchst und diese Positionsangabe zum Extrahieren eines Teilstrings per substr verwendest.

    Einen schönen Mittwoch noch.

    Gruß, Mathias

    --
    sh:( fo:} ch:? rl:( br: n4:~ ie:{ mo:| va:) de:> zu:} fl:( ss:) ls:[ js:|
    „It is required that HTML be a common language between all platforms. This implies no device-specific markup, or anything which requires control over fonts or colors, for example. This is in keeping with the SGML ideal.“
    [HTML Design Constraints: Logical Markup]