Wednesday, February 28, 2018

Laravel swap the position in collection – multidimensional array - development

Laravel swap the position in collection – multidimensional array

Following is the array in the collection:

array:1 [▼
  "online" => array:2 [▼
    "IS-003" => array:19 [▼
      "product" => Product {#831 ▶}
      "quantity" => 1
      "payment-option" => "online"
    ]
    "HA4" => array:19 [▼
      "product" => Product {#822 ▶}
      "quantity" => 1
      "payment-option" => "online"
    ]
  ]
]

Whenever a user changes the payment-option, accordingly the above array should change.

For instance, if HA4['payment-option'] is changed from online to cod, then there should be 2 arrays in parent array.
Following is the array that I want as result.

array:2 [▼
  "online" => array:1 [▼
    "IS-003" => array:19 [▼
      "product" => Product {#831 ▶}
      "quantity" => 1
      "payment-option" => "online"
    ]
  ]
  "cod" => array:1 [▼
    "HA4" => array:19 [▼
      "product" => Product {#822 ▶}
      "quantity" => 1
      "payment-option" => "cod"
    ]
  ]
]

The thing that I have tried so far but couldn’t get the desired result:

$paymentOptionCart = collect();

foreach ($cart as $paymentType => &$details) {
    foreach ($details as $c => $p) {
        if ($c == $code) {
            $details[$c]['payment-option'] = $request->option;
            $paymentOptionCart->put($paymentType, $details);

            unset($details[$c]);
        }
    }
}

On executing the above code, nothing happens except the payment-option is updated to cod.

I know I am making a silly mistake somewhere, but I am unable to locate where and how.

Can anybody help me out?



from Laravel Questions and Answers https://laravelquestions.com/php/laravel-swap-the-position-in-collection-multidimensional-array/
via Lzo Media

No comments:

Post a Comment