I encountered a strange behavior of Magento 1.8 after changing php version from 5.5 to 7.0.
This strange behavior is due to a change in the work function uasort
I've created a magento module to solve magento issues with totals calculation for php7. The issues I've experienced in particular were that taxes have been added twice to the grand total for pay with amazon module on the amazonpayments checkout page.
The solution was provided by archigrafix on https://magento.stackexchange.com/a/97107/35665 solved my issues - so this is simply the fix packed into a module.
https://github.com/hartmut-ltd/magento-php7-totals-fix
From the usort() documentation:
Note: If two members compare as equal, their relative order in the sorted array is undefined.
This is what you're seeing here. PHP 7 uses a different, partially stable sorting algorithm, so elements that compare equal according to your sorting function may now have a different order.
If you care about the sorting order of equal elements (and this is not just a testing issue), you should make it explicit in your comparison function.