The different behavior of the function uasort in PHP 5.5 and PHP 7.0

后端 未结 2 1494
迷失自我
迷失自我 2021-01-17 12:16

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

相关标签:
2条回答
  • 2021-01-17 12:47

    Possible Solution

    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.

    Credits

    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.

    Module:

    https://github.com/hartmut-ltd/magento-php7-totals-fix

    0 讨论(0)
  • 2021-01-17 12:48

    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.

    0 讨论(0)
提交回复
热议问题