2017-03-29 17 views
0

私は非常に奇妙な問題を抱えています。不正な値が不正なユーザーオブジェクトに重複しています

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になります。どんな助け?

答えて

0

何が起こっているのか分かりませんが、このビットを関数内のfor()の先頭に追加してServicesTestと同等のサービスを設定して修正しました。

foreach($flight->Services as $serv) { 
    $code = $serv->SSRCode; 
    $flight->Adults[$i]->ServicesTest->$code = ($get['service-'.$code.'-'.$i] == 'yes' ? true : false); 
} 

... 

$flight->Adults[$i]->Services = $flight->Adults[$i]->ServicesTest; 
関連する問題