I cannot find an effective solution on rearranging/swapping an array item by its value by shifting by - 1 or + 1. I’m making an order on tables, if the user wants to shift the order by moving the value upwards or downwards, the array should swap the value of the desired item upwards or downwards, for example:
If the user wants to move the item order upwards:
$desired_item_to_move = 'banana';
$default_order = array('orange', 'apple', 'banana', 'pineapple', 'strawberry');
// Typically it should return this:
array('orange', 'banana', 'apple', 'pineapple', 'strawberry');
As you can see that banana and apple has been swapped, due to banana is moved upwards, if the user wants to move it down, it should swap pineapple to banana (from the first array) and so on.
I looked around on functions, array_replace was closest, but it only replaces arrays.
Shifting up (assuming you’ve checked that the item is not already the first one):
Shifting down: