私は配列の配列を持っています。彼らはセミナーを購読したすべての行の人々です。テーブルの終わりにはいくつかのアップセル製品が追加されています。問題は:時々誰かが2人のために注文し、トランザクションに属するアップセル製品は、人にではなく、両方の人の後ろに参加しています。だから2人にサインアップして2枚のシャツを買うと、リストには2枚のシャツが2回表示されます。ネストされたforeachスコープのブール値が予期しない値を与える
私は考えています:それをループして、アップセルを見つけて、2回目のすべての発生を単純なダブルで取り除いてみましょう。foreach
しかし、$first
の値は常にtrue
のままです。宣言の下にそれをエコーすると、それはfalse
です。私は値を何回かエコーして、コードのコメントに値を加えました。
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
}
}
}
}
ここでは何か変わったことはありますか?私の意見では、それは最初にループしてから真であり、次にループが2番目になり、偽になるはずです。
EDITは、結果のprint_r
を追加しました。
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]
[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
)
)
何$結果 – RST
の構造である!$最初は$まず、真ではfalseです。どうしたの? –
@KrisRoofe 2番目のforeachの2回目の反復で$が最初にfalseになるようにしたいのですが、何とか '$ first = true'で毎回再起動し、最初の反復でfalseに設定されます。 –