私は非常に奇妙な問題を抱えています。不正な値が不正なユーザーオブジェクトに重複しています
processServicesという関数は、「flight」という大きなオブジェクトと前のページのフォームからGET値を取得して、選択した航空会社のサービスを適切なユーザーの「プロフィール」内に追加するために使用されていますオブジェクト。また、特定のユーザーのサービスの価格を合計し、それをオブジェクトに追加します。
これらのサービスは動的ですが、私の機能ではサービスコードは期待できず、getデータに依存する必要があります。
問題があるのは、2人のユーザーがいて2番目のユーザーがサービスにサインアップすると、そのユーザーのサービス合計がゼロにとどまっていても、最初のユーザーもそのサービスを取得するということです。機能を実行する前に、飛行物体の
例:
以下[Flight] => stdClass Object
(
[Adults] => Array
(
[0] => stdClass Object
(
[FirstName] => Test
[MiddleName] =>
[LastName] => Account
[Services] => stdClass Object
(
[BLND] => 0
[EMSA] => 0
[PETH] => 0
[SVAN] => 0
[WCHR] => 0
)
)
[1] => stdClass Object
(
[FirstName] => The
[MiddleName] =>
[LastName] => Dude
[Services] => stdClass Object
(
[BLND] => 0
[EMSA] => 0
[PETH] => 0
[SVAN] => 0
[WCHR] => 0
)
)
)
[AdultNum] => 2
[Services] => Array
(
[0] => stdClass Object
(
[LogicalFlightID] => 4569
[ServiceID] => 0
[DepartureDate] => 2017-04-03T00:00:00
[OperatingCarrier] =>
[MarketingCarrier] =>
[CodeType] => BLND
[Description] => Can Choose Own Seat
[CurrencyCode] => USD
[Amount] => 0.0
[AmountActive] => 1
[AmountType] =>
[CategoryID] => 1
[SSRCode] => BLND
[Display] => 1
[MaxCountServiceLevel] => 8
[Refundable] =>
[PNLActive] => 1
[CutoffHours] => -1
[Commissionable] =>
[DisplayOrder] => 0
[RevenueCategoryID] => 7
[IATAStandardCodeType] =>
[ServiceActive] => 1
[MaxCountFlightLevel] => 0
[QuantityAvailable] => 8
[StartSalesDays] => -1
[ApplicableTaxes] => stdClass Object
(
)
[BoardingPassSsrOrder] => 999
[Name] => Blind Passenger
)
[1] => stdClass Object
(
[LogicalFlightID] => 4569
[ServiceID] => 0
[DepartureDate] => 2017-04-03T00:00:00
[OperatingCarrier] =>
[MarketingCarrier] =>
[CodeType] => EMSA
[Description] =>
[CurrencyCode] => USD
[Amount] => 0.0
[AmountActive] => 1
[AmountType] => Flat Fee
[CategoryID] => 221
[SSRCode] => EMSA
[Display] => 1
[MaxCountServiceLevel] => 1
[Refundable] => 1
[PNLActive] => 1
[CutoffHours] => 0
[Commissionable] =>
[DisplayOrder] => 0
[RevenueCategoryID] => 7
[IATAStandardCodeType] =>
[ServiceActive] => 1
[MaxCountFlightLevel] => 1
[QuantityAvailable] => 1
[StartSalesDays] => -1
[ApplicableTaxes] => stdClass Object
(
)
[BoardingPassSsrOrder] => 999
[Name] => Emotional Support Animal
)
[2] => stdClass Object
(
[LogicalFlightID] => 4569
[ServiceID] => 0
[DepartureDate] => 2017-04-03T00:00:00
[OperatingCarrier] =>
[MarketingCarrier] =>
[CodeType] => PETH
[Description] => PET IN HOLD
[CurrencyCode] => USD
[Amount] => 25
[AmountActive] => 1
[AmountType] => Flat Fee
[CategoryID] => 221
[SSRCode] => PETH
[Display] => 1
[MaxCountServiceLevel] => 1
[Refundable] => 1
[PNLActive] =>
[CutoffHours] => 0
[Commissionable] =>
[DisplayOrder] => 0
[RevenueCategoryID] => 7
[IATAStandardCodeType] =>
[ServiceActive] => 1
[MaxCountFlightLevel] => 0
[QuantityAvailable] => 0
[StartSalesDays] => -1
[ApplicableTaxes] => stdClass Object
(
)
[BoardingPassSsrOrder] => 999
)
[3] => stdClass Object
(
[LogicalFlightID] => 4569
[ServiceID] => 0
[DepartureDate] => 2017-04-03T00:00:00
[OperatingCarrier] =>
[MarketingCarrier] =>
[CodeType] => SVAN
[Description] => SERVICE ANIMAL
[CurrencyCode] => USD
[Amount] => 0.0
[AmountActive] => 1
[AmountType] => Flat Fee
[CategoryID] => 221
[SSRCode] => SVAN
[Display] => 1
[MaxCountServiceLevel] => 1
[Refundable] => 1
[PNLActive] => 1
[CutoffHours] => 0
[Commissionable] =>
[DisplayOrder] => 0
[RevenueCategoryID] => 7
[IATAStandardCodeType] =>
[ServiceActive] => 1
[MaxCountFlightLevel] => 0
[QuantityAvailable] => 0
[StartSalesDays] => -1
[ApplicableTaxes] => stdClass Object
(
)
[BoardingPassSsrOrder] => 999
)
[4] => stdClass Object
(
[LogicalFlightID] => 4569
[ServiceID] => 0
[DepartureDate] => 2017-04-03T00:00:00
[OperatingCarrier] =>
[MarketingCarrier] =>
[CodeType] => WCHR
[Description] =>
[CurrencyCode] => USD
[Amount] => 0.0
[AmountActive] => 1
[AmountType] =>
[CategoryID] => 1
[SSRCode] => WCHR
[Display] => 1
[MaxCountServiceLevel] => 8
[Refundable] =>
[PNLActive] => 1
[CutoffHours] => -1
[Commissionable] =>
[DisplayOrder] => 0
[RevenueCategoryID] => 7
[IATAStandardCodeType] =>
[ServiceActive] => 1
[MaxCountFlightLevel] => 0
[QuantityAvailable] => 8
[StartSalesDays] => -1
[ApplicableTaxes] => stdClass Object
(
)
[BoardingPassSsrOrder] => 999
[Name] => Wheelchair (can Climb Stairs And Walk To Chair)
)
)
)
が関数です。 getデータは次のように構成されています。 service-CODE-#ここで、CODEはサービスの一意のコードであり、#はユーザーIDです(0から始まり最大8になります)。だから、保留中のペットを望んでいたユーザー1で誰かがサービスPETH-0
関数のように取得する名前を持つことになります。この例では
function processServices($flight, $get) {
$totalCost = 0;
for($i=0; $i<$flight->AdultNum; $i++) {
$totalCost = 0;
foreach($flight->Services as $s) {
$code = $s->SSRCode;
if ($get['service-'.$code.'-'.$i] == 'yes') {
$flight->Adults[$i]->Services->$code = true;
$totalCost += $s->Amount;
} else {
$flight->Adults[$i]->Services->$code = false;
}
}
$flight->Adults[$i]->ServicesTotal = $totalCost;
$totalCost = 0;
}
return $flight;
}
次の$の_GET変数である:
service-BLND-0=no&service-EMSA-0=no&service-PETH-0=no&service-SVAN-0=no&service-WCHR-0=no&service-BLND-1=no&service-EMSA-1=no&service-PETH-1=yes&service-SVAN-1=no&service-WCHR-1=no&step=4
しかし、いくつかの理由で、その関数を処理した後に、これは新しいオブジェクト(PETHは、それが一つだけのために集計していますにもかかわらず、両方のユーザーのためにマークされている)である。
[Flight] => stdClass Object
(
[Adults] => Array
(
[0] => stdClass Object
(
[FirstName] => Test
[MiddleName] =>
[LastName] => Account
[Services] => stdClass Object
(
[BLND] => 0
[EMSA] => 0
[PETH] => 1
[SVAN] => 0
[WCHR] => 0
)
[ServicesTotal] => 0
)
[1] => stdClass Object
(
[FirstName] => The
[MiddleName] =>
[LastName] => Dude
[Services] => stdClass Object
(
[BLND] => 0
[EMSA] => 0
[PETH] => 1
[SVAN] => 0
[WCHR] => 0
)
[ServicesTotal] => 25
)
)
[AdultNum] => 2
[Services] => Array
(
[0] => stdClass Object
(
[LogicalFlightID] => 4569
[ServiceID] => 0
[DepartureDate] => 2017-04-03T00:00:00
[OperatingCarrier] =>
[MarketingCarrier] =>
[CodeType] => BLND
[Description] => Can Choose Own Seat
[CurrencyCode] => USD
[Amount] => 0.0
[AmountActive] => 1
[AmountType] =>
[CategoryID] => 1
[SSRCode] => BLND
[Display] => 1
[MaxCountServiceLevel] => 8
[Refundable] =>
[PNLActive] => 1
[CutoffHours] => -1
[Commissionable] =>
[DisplayOrder] => 0
[RevenueCategoryID] => 7
[IATAStandardCodeType] =>
[ServiceActive] => 1
[MaxCountFlightLevel] => 0
[QuantityAvailable] => 8
[StartSalesDays] => -1
[ApplicableTaxes] => stdClass Object
(
)
[BoardingPassSsrOrder] => 999
[Name] => Blind Passenger
)
[1] => stdClass Object
(
[LogicalFlightID] => 4569
[ServiceID] => 0
[DepartureDate] => 2017-04-03T00:00:00
[OperatingCarrier] =>
[MarketingCarrier] =>
[CodeType] => EMSA
[Description] =>
[CurrencyCode] => USD
[Amount] => 0.0
[AmountActive] => 1
[AmountType] => Flat Fee
[CategoryID] => 221
[SSRCode] => EMSA
[Display] => 1
[MaxCountServiceLevel] => 1
[Refundable] => 1
[PNLActive] => 1
[CutoffHours] => 0
[Commissionable] =>
[DisplayOrder] => 0
[RevenueCategoryID] => 7
[IATAStandardCodeType] =>
[ServiceActive] => 1
[MaxCountFlightLevel] => 1
[QuantityAvailable] => 1
[StartSalesDays] => -1
[ApplicableTaxes] => stdClass Object
(
)
[BoardingPassSsrOrder] => 999
[Name] => Emotional Support Animal
)
[2] => stdClass Object
(
[LogicalFlightID] => 4569
[ServiceID] => 0
[DepartureDate] => 2017-04-03T00:00:00
[OperatingCarrier] =>
[MarketingCarrier] =>
[CodeType] => PETH
[Description] => PET IN HOLD
[CurrencyCode] => USD
[Amount] => 25
[AmountActive] => 1
[AmountType] => Flat Fee
[CategoryID] => 221
[SSRCode] => PETH
[Display] => 1
[MaxCountServiceLevel] => 1
[Refundable] => 1
[PNLActive] =>
[CutoffHours] => 0
[Commissionable] =>
[DisplayOrder] => 0
[RevenueCategoryID] => 7
[IATAStandardCodeType] =>
[ServiceActive] => 1
[MaxCountFlightLevel] => 0
[QuantityAvailable] => 0
[StartSalesDays] => -1
[ApplicableTaxes] => stdClass Object
(
)
[BoardingPassSsrOrder] => 999
)
[3] => stdClass Object
(
[LogicalFlightID] => 4569
[ServiceID] => 0
[DepartureDate] => 2017-04-03T00:00:00
[OperatingCarrier] =>
[MarketingCarrier] =>
[CodeType] => SVAN
[Description] => SERVICE ANIMAL
[CurrencyCode] => USD
[Amount] => 0.0
[AmountActive] => 1
[AmountType] => Flat Fee
[CategoryID] => 221
[SSRCode] => SVAN
[Display] => 1
[MaxCountServiceLevel] => 1
[Refundable] => 1
[PNLActive] => 1
[CutoffHours] => 0
[Commissionable] =>
[DisplayOrder] => 0
[RevenueCategoryID] => 7
[IATAStandardCodeType] =>
[ServiceActive] => 1
[MaxCountFlightLevel] => 0
[QuantityAvailable] => 0
[StartSalesDays] => -1
[ApplicableTaxes] => stdClass Object
(
)
[BoardingPassSsrOrder] => 999
)
[4] => stdClass Object
(
[LogicalFlightID] => 4569
[ServiceID] => 0
[DepartureDate] => 2017-04-03T00:00:00
[OperatingCarrier] =>
[MarketingCarrier] =>
[CodeType] => WCHR
[Description] =>
[CurrencyCode] => USD
[Amount] => 0.0
[AmountActive] => 1
[AmountType] =>
[CategoryID] => 1
[SSRCode] => WCHR
[Display] => 1
[MaxCountServiceLevel] => 8
[Refundable] =>
[PNLActive] => 1
[CutoffHours] => -1
[Commissionable] =>
[DisplayOrder] => 0
[RevenueCategoryID] => 7
[IATAStandardCodeType] =>
[ServiceActive] => 1
[MaxCountFlightLevel] => 0
[QuantityAvailable] => 8
[StartSalesDays] => -1
[ApplicableTaxes] => stdClass Object
(
)
[BoardingPassSsrOrder] => 999
[Name] => Wheelchair (can Climb Stairs And Walk To Chair)
)
)
)
この関数は、これらの値を変更するコード内の関数です。関数を常にfalseに設定するように設定すると、それらのすべてがfalseになります。どんな助け?