WCM - Das österreichische Computer Magazin Forenübersicht
 

Zurück   WCM Forum > Rat & Tat > Programmierung

Programmierung Rat & Tat für Programmierer

Microsoft KARRIERECAMPUS

Antwort
 
Themen-Optionen Ansicht
Alt 26.09.2007, 20:36   #1
iG0r
Gesperrt
 
Registriert seit: 14.08.2003
Alter: 47
Beiträge: 915


Standard Aus $_SESSION array Objects erstellen

Hab anscheinen ein kleines Problem mit der Syntax, da immer nur das 1. Object erstellt wird

Bitte um Hilfe

PHP-Code:
$i 0;
foreach (
$_SESSION['myPage']['items'] AS $key => $value)
{
         
$i++;
         
         
$item[$i] = new Item();
         
         
$item[$i]->setNumber($i);
       
$item[$i]->setItemId($key);
       
$item[$i]->setQuantity($value);
       
       
$request->addItem($item[$i]);

Es wird damit ein XML-File erstellt, leider scheint nur immer das 1. Item auf. Jedes andere wird ignoriert. Hab testweise eine Summenprüfung eingebaut gehabt, ob der Loop auch wirklich durchläuft, tut er, also muss der Fehler irgendwo in meiner Syntax sein. Setzt man die Items per Hand scheinen sie auch auf.

Hat jemand Rat?
Danke.
iG0r ist offline   Mit Zitat antworten
Alt 26.09.2007, 21:12   #2
iG0r
Gesperrt
 
Registriert seit: 14.08.2003
Alter: 47
Beiträge: 915


Standard

Bin dumm ... ist ja jetzt ein array und die Class function will durchnummerierte Objects, zb $item_1, $item_2, ...

Mit $item.$i-> geht es auch nicht. Kann man Objects eigentlich durchnummierieren?
iG0r ist offline   Mit Zitat antworten
Alt 26.09.2007, 22:09   #3
zAPPEL
Inventar
 
Registriert seit: 07.11.2001
Ort: Perchtoldsdorf
Alter: 45
Beiträge: 2.085

Mein Computer

Standard

Hm.. mit "eval" könnte es evt. funktionieren.. (?):

eval ("$item_".$i." = new Item()");

Aber keine Ahnung ob das so gescheit ist
____________________________________
„Das menschliche Gehirn ist eine großartige Sache.
Es funktioniert vom Moment der Geburt an – bis zu
dem Zeitpunkt, wo du aufstehst, um eine Rede zu halten.“ Mark Twain

"Windle shook his head sadly. Four exclamation marks, the sure sign of an insane mind" Reaper Man, Terry Pratchett
zAPPEL ist offline   Mit Zitat antworten
Alt 26.09.2007, 23:35   #4
iG0r
Gesperrt
 
Registriert seit: 14.08.2003
Alter: 47
Beiträge: 915


Standard

Mit eval hatte ich es auch schon versucht, scheint aber nicht wirklich zu klappen

Wollte auch schon tricksen mit:

PHP-Code:
$item '$item'.$i
Also $item wird dann als $item1, $item2, ... usw. zurück gegeben, aber das Object kommt damit anscheinend nicht klar.
iG0r ist offline   Mit Zitat antworten
Alt 27.09.2007, 22:08   #5
jak
Inventar
 
Registriert seit: 13.06.2001
Beiträge: 1.830


Standard

Prinzipiell sollte so etwas mit variablen Variablen machbar sein:
Variante 1:
Code:
$i = 0;
foreach ($_SESSION['myPage']['items'] AS $key => $value) {
  $i++;
  $name_der_var = 'item_'.$i
  $$name_der_var = new Item();
  ...
  $request->addItem($$name_der_var);
}
Variante 2: geschwungene Klammern
...
${'item_'.$i} = new Item();
...

Außerdem sollte es noch eine dritte Variante geben:
Code:
foreach ...{
  ...
  $item = = new Item();
  ...
  $request->addItem($item);
  ...
}
D.h. man spart sich das ganze dynamische benennen. Ich hab' im Moment gerade kein PHP installiert, daher kann ich die 3.Variante nicht überprüfen. $request->addItem sollte aber eine Kopie von $item anlegen, ich glaube nicht das man das es nur eine Referenz ist. Bin mir aber nicht sicher -> ausprobieren.

jak
____________________________________
Join the DNRC | Godwin\'s Law (thx@stona)
Documentation is like sex: If it\'s good, it\'s very, very good. If it\'s bad, it\'s better than nothing.
\"In theory, theory and practice are the same. In practice, they are not\" (Lawrence Berra)
jak ist offline   Mit Zitat antworten
Alt 28.09.2007, 11:23   #6
iG0r
Gesperrt
 
Registriert seit: 14.08.2003
Alter: 47
Beiträge: 915


Standard

Danke.

Ich habs schon gelöst, in dem ich die Function in der Class umgeschrieben habe

Dachte mir, wenn ich keine Lösung habe, muss ich die Ursache beseitigen.

Werde aber deine Vorschäge auf jeden Fall testen, ich will ja auch was lernen
iG0r ist offline   Mit Zitat antworten
Antwort


Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1)
 

Forumregeln
Es ist Ihnen nicht erlaubt, neue Themen zu verfassen.
Es ist Ihnen nicht erlaubt, auf Beiträge zu antworten.
Es ist Ihnen nicht erlaubt, Anhänge hochzuladen.
Es ist Ihnen nicht erlaubt, Ihre Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.

Gehe zu


Alle Zeitangaben in WEZ +2. Es ist jetzt 08:35 Uhr.


Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
Forum SEO by Zoints
© 2009 FSL Verlag