Ahah, found it.
It was because the array wasn’t using a standard [0] [1] [2] key sequence. It saved it in the database as expected, but when it output it on the front-end / admin area that it rearranged it by key into ascending numerical order.
Luckily I didn’t need to keep the keys, so I reset them by using array_values() before putting through the update_field() function.
So…
`var_dump($array);
update_field(‘content_blocks’, $array, $post_id);`
… gives us…
array(5) { [5956]=> int(7299) [5107]=> int(3368) [5954]=> int(3514) [5955]=> int(3515) [5957]=> int(7300) }
…and it saves the following into the database:
a:5:{i:5956;s:4:"7299";i:5107;s:4:"3368";i:5954;s:4:"3514";i:5955;s:4:"3515";i:5957;s:4:"7300";}
…and that outputs on the front end in the wrong order.
My fix was to reset the array keys to a basic version like:
`var_dump($array);
$cleaned_array = array_values($array);
update_field(‘content_blocks’, $cleaned_array, $post_id);`
…which gives the same output, but saves the following into the database:
a:5:{i:0;s:4:"7299";i:1;s:4:"3368";i:2;s:4:"3514";i:3;s:4:"3515";i:4;s:4:"7300";}
…which does output in the correct order.
That’s enough to fix the issue in my case. Thanks for your time!