unset ile silersen array index yapin yeniden sıralanmaz, array_splice ile silmen gerekiyor.
örneğin elinde $cars = array("Volvo", "BMW", "Toyota"); şeklinde bir array varsa normalde bu arrayin çıktısı Array ([0] => "Volvo" [1] => "BMW" [2] => "Toyota ") şeklinde 0,1,2. indexler ile olacaktır.
Eğer unset kullanırsan ve örneğin unset(1) dersen array çıktısı şu şekilde olacak : Array ([0] => "Volvo" [2] => "Toyota ") yani 1. index yok olmuş oldu. Dolayısıyla loop döndürüyorsan hesaplama sorunu oluşacaktır.
aynı işlem için array_splice kullanırsan array çıktısı Array ([0] => "Volvo" [1] => "Toyota ") olacak ve array yeniden oluşturulup indexler düzenlenecektir.
Eğer array yapında fiyat ile siparis id aynı index altında değilse ayrı ayrı silmen gerekiyor.