Immer wieder Probleme mit foreach

Ich werde mal wahnsinnig :)


Ich will ein einfaches foreach auf ein Array anwenden, es will und will nicht klappen:

PHP:
									foreach($_SESSION['cart'] as $count) {
										
										if ( $x = array_search ( $id, $_SESSION['cart'][$count]))
															{    
															    echo $_SESSION['cart'][$count][$x]. ' wurde gefunden!';
															}	
											}

$count ist doch einfach nur die Nummer, mein Array sieht so aus:
Code:
Array
(
    [0] => Array
        (
            [id] => 72
            [quantity] => 1
            [selections] => 
        )

)

Ich bekomm die Fehlermeldung:

Warning: Illegal offset type in C:\xampp\htdocs\xampp\myshop\inc\config.php on line 498

Warning: array_search() [function.array-search]: Wrong datatype for second argument in C:\xampp\htdocs\xampp\myshop\inc\config.php on line 498

Grüße,
prinzschleifer
 
Hab das jetzt so realisiert:
PHP:
									for($i=0;$i<count($_SESSION['cart']);$i++) {
										
										if ( $x = array_search($id, $_SESSION['cart'][$i])) 
															{    
															    echo $_SESSION['cart'][$i][$x]. ' wurde gefunden!';
															}	
											}

Und mit foreach? Krieg man das auch irgendwie hin?
 
Ich glaube deine foreach-Schleife ist nicht ganz richtig aufgebaut:
Wenn ich das richtig sehe, sollte $_SESSION['cart'] ein Array sein!? Wenn das so ist, gilt folgendes bzw. eigentlich immer:

PHP:
foreach ($array as $schluessel => $wert)
{
    echo "der $schluessel hat den wert $wert\n";
}

und deine if-Abfrage sollte dann so aussehen:
PHP:
//if ( $x = array_search ( $id, $_SESSION['cart'][$schluessel]))
// bzw.:
if ( $x = array_search ( $id, $wert))
{
    //echo $_SESSION['cart'][$schluessel][$x]. ' wurde gefunden!';
    // bzw.:
    echo $wert[$x]. ' wurde gefunden!';
}

// oops etwas zu langsam^^
 
Ich würde Folgendes machen:
PHP:
$found = false;
foreach ($_SESSION['cart'] as $key => $val) {
	if ($val['id'] == $id) {
		$found = true;
		break;
	}
}
if ($found) {
	echo $id.' wurde in '.$key.' gefunden!';
} else {
	echo $id.' wurde nicht gefunden!';
}
 
Vielen Dank für die tollen Antworten, ich steh aber immer noch auf dem Schlauch

Sagen wir $i sei die gefundene ID des Arrays, dies können aber schließlich auch mehrere sein. Jetzt wirds ein bisschen kompliziert:

Also ich habe einen Einkaufswagen, der durchnummeriert ist, hab das schonmal in einem Thread gehabt:
Code:
Array
(
    [0] => Array
        (
            [id] => 90
            [quantity] => 1
            [selections] => Array
                (
                    [0] => Array
                        (
                            [name] => Size
                            [choice] => Big
                            [price] => 200
                            [direkt] => Array
                                (
                                    [0] => 1
                                    [1] => 0
                                    [2] => 0
                                )

                        )

                    [1] => Array
                        (
                            [name] => Noch ein Test
                            [choice] => Deine Mutter
                            [price] => 121212
                            [direkt] => Array
                                (
                                    [0] => 2
                                    [1] => 0
                                    [2] => 0
                                )

                        )

                    [2] => Array
                        (
                            [name] => Jochen 
                            [choice] => XL
                            [price] => 600
                            [direkt] => Array
                                (
                                    [0] => 3
                                    [1] => 0
                                    [2] => 0
                                )

                        )

                )

        )

)

Nun suche ich ja mit dem obigen Skript nach Übereinstimmungen. Hab aus dem $i[] mal ein Array gemacht, dass man mehrere Array IDs speichern kann.

Nun möchte in einer foreach verschachtelung aber nur die $i's haben die eine Übereinstimmung haben:

PHP:
foreach ($_SESSION['cart'] as $count => $wert) {
                 if($wert == $i) { //In $i enthalen
                    foreach($wert as $count2 => $wert2) {    
                   if(is_array($wert2)) {
                            foreach($wert2 as $count32323 => $wert3) { 
                            
                                                    $searcharray[] = $wert3['direkt'];
                                                    }
                                 }       }     }               
}

Wie kann ich der Schleife sagen, dass sie nur in den Arrays suchen soll die in I enthalten sind?

Ich hoffe ich hab mich halbwegs verständlich ausgedrückt,
danke!

prinzschleifer
 
Zurück