foreach in funktion

empty123

Mitglied
Hey
Ich habe folgendes Problem.
Ich sitze grad an einem Shop und habe folgende Funktion erstellt:

PHP:
@session_start();
$waren = $_SESSION['array("waren")'];


function info($bestellnummer,$anzahl){
foreach($waren as $key => $value){
if($key == $bestellnummer){
   echo "d";
   $anzahl2 = $waren['bestellnummer'];
   $waren['bestellnummer'] = $anzahl + $anzahl2;
}else{ $waren['bestellnummer'] = $anzahl; }


}

echo info("645","2");

Es liegt definitiv an der Funktion er gibt mir immer folgendes zurück:

Warning: Invalid argument supplied for foreach() in C:\xampp\htdocs\eshop\test.php on line 13

Warum funktioniert foreach in einer Funktion nicht?
 
Zuletzt bearbeitet:
Wo kommt denn $waren her? Informiere dich mal über den Geltungsbereich von Variablen.

Zitat von der Seite:
Jede in einer Funktion benutzte Variable ist zunächst auf den lokalen Bereich der Funktion beschränkt, z.B.:
PHP:
<?php
$a = 1; // globaler Bereich

function test () { 
    echo $a; // Referenz auf einen lokalen Variablen-Bereich
} 

test ();
?>
Dieses Skript erzeugt keine Bildschirm-Ausgabe, da sich die Echo- Anweisung auf eine lokale Variable namens $a bezieht und dieser kein Wert im lokalen Bezug zugewiesen worden ist.

Merkst du was? ;)
 
Hi!

du hast an sich drei Möglichkeiten:

1. du machst du Variable $waren global Verfügbar.
2. du übergibst du Variable $waren an die Funktion.
3. du verwendest in der Funktion die sowieso global verfügbare Session variable.

Viele Grüße
 
Moin,

Die Antwort wurde dir doch schon gegeben.
Wo kommt die Var "$waren" her. Das ist ein Array welches du in der Schleife auflößt.
Da du dieses Var nicht über Parameter übergibst, mußt die Var global machen,, damit man eine Variable ausserhalb der Funktion auch innerhalb verwenden kann.

PHP:
@session_start();
$waren = $_SESSION['array("waren")'];


function info($bestellnummer,$anzahl){
global $waren;
foreach($waren as $key => $value){
if($key == $bestellnummer){
   echo "d";
   $anzahl2 = $waren['bestellnummer'];
   $waren['bestellnummer'] = $anzahl + $anzahl2;
}else{ $waren['bestellnummer'] = $anzahl; }


}

echo info("645","2");
 
@Maniac_81: ".... also hab das jetzt so probiert, ...." Hab das schon gelesen was Johannes gesagt hat ;)

hab das Problem jetzt gefunden warum es immernoch nicht ging.
Der Array war leer.
Danke vielmals ...
 
Zurück