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
)
)
Was die Struktur von $ ist ergibt – RST
! $ Erste wahr ist, $ erste falsch ist. Was ist das Problem? –
@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. –