2017-05-15 2 views
3

Ich habe ein Array von Arrays. Sie sind alle Reihen von Leuten, die ein Seminar abonniert haben. Am Ende der Tabelle sind einige Upsell-Produkte hinzugefügt. Problem ist: Manchmal bestellt jemand für 2 Personen und die Upsell-Produkte, die zu einer Transaktion gehören, nicht zu einer Person, sind hinter beiden Personen vereint. Wenn ich also 2 Leute anmelde und 2 Shirts kaufe, gibt es in der Liste 2 Shirts zweimal.Boolescher Wert in verschachtelten foreach Bereich gibt unerwarteten Wert

Also dachte ich: Lasst uns durchschleifen, schauen, ob ich Upsells finde und dann jedes zweite Mal mit einem einfachen Doppel foreach entfernen. Aber der Wert von $first bleibt true immer. Während es false ist, wenn ich es unter der Deklaration echo. Ich wiederholte die Werte mehrmals und ich fügte den Wert in Kommentare den Code hinzu.

foreach($results as $key => $result){ 
    if(!empty($result["upsell"])){ 
     $tid = $result["id"]; 
     $first = true; 
     foreach($results as $result2){ 
      if($result2["id"] == $tid){ 
       // ALWAYS TRUE 
       if(!$first){ 
        $results[$key]["upsell"] = ""; 
       } 
       $first = false; 
       // FALSE 
      } 
     } 
    } 
} 

Gibt es hier eine seltsame Sache? Meiner Meinung nach sollte es zuerst Schleife und wahr dann Schleife zweite und falsch sein.

EDIT, fügte die print_r der Ergebnisse hinzu.

Array 
(
    [28] => Array 
    (
     [id] => 1475 
     [transaction_id] => SAME 
     [club] => xxxxxxxx 
     [event] => Voetbalmiddag 
     [category] => Scoutingdagen 
     [date_from] => 2017-05-31 
     [date_end] => 2017-05-31 
     [first_name] => xxxxxx 
     [last_name] => xxxxxx 
     [birth_date] => xxxxxxx 
     [email] => [email protected]otmail.com 
     [address] => xxxxx 
     [zipcode] => 8xxxxx 
     [city] => xxxxxx 
     [phone] => xxxxxx 
     [soccer_club] => xxxxxxx 
     [soccer_team] => MP JO7-2 
     [position] => field 
     [printed] => 0 
     [print_name] => 
     [print_number] => 
     [shirt_size] => 
     [sock_size] => 
     [pants_size] => 
     [referral] => Via de sportvereniging 
     [comments] => 
     [status] => paid 
     [upsell] => 2 Shirt 
    ) 

[29] => Array 
    (
     [id] => 1476 
     [transaction_id] => SAME 
     [club] => xxxxxxx 
     [event] => Voetbalmiddag 
     [category] => Scoutingdagen 
     [date_from] => 2017-05-31 
     [date_end] => 2017-05-31 
     [first_name] => xxxx 
     [last_name] => xxxxxxx 
     [birth_date] => xxxxxxx 
     [email] => [email protected] 
     [address] => Ixxxxx 
     [zipcode] => xxxxx 
     [city] => xxxxxx 
     [phone] => xxxxx 
     [soccer_club] => xxxxx 
     [soccer_team] => MP JO9-9 
     [position] => keeper 
     [printed] => 0 
     [print_name] => 
     [print_number] => 
     [shirt_size] => 
     [sock_size] => 
     [pants_size] => 
     [referral] => Via de sportvereniging 
     [comments] => 
     [status] => paid 
     [upsell] => 2 Shirt 
    ) 

[50] => Array 
    (
     [id] => 1468 
     [transaction_id] => xxxxxxx 
     [club] => xxxxxxxxxxx 
     [event] => Voetbalmiddag 
     [category] => Scoutingdagen 
     [date_from] => 2017-05-31 
     [date_end] => 2017-05-31 
     [first_name] => xxxxx 
     [last_name] => xxxxx 
     [birth_date] => xxxxx 
     [email] => [email protected] 
     [address] => xxxx 35 
     [zipcode] => xxxx 
     [city] => xxxxx 
     [phone] => xxxxx 
     [soccer_club] => xxxx 
     [soccer_team] => jo11-5 
     [position] => field 
     [printed] => 0 
     [print_name] => 
     [print_number] => 
     [shirt_size] => 
     [sock_size] => 
     [pants_size] => 
     [referral] => Via de flyer 
     [comments] => 
     [status] => open 
     [upsell] => 1 Shirt 
    ) 

) 
+0

Was die Struktur von $ ist ergibt – RST

+0

! $ Erste wahr ist, $ erste falsch ist. Was ist das Problem? –

+0

@KrisRoofe Ich möchte, dass $ zuerst in der zweiten Iteration des zweiten Foreachs falsch ist, aber irgendwie startet es jedes Mal neu mit '$ first = true', während es bei der ersten Iteration auf false gesetzt wird. –

Antwort

0
... 
$first = true; 
$results1 = $results; 
foreach($results1 as $result2){ 
... 
+0

Das hat leider nicht geholfen! –

Verwandte Themen