最近写相册程序有个排序需要,即将指定ID的图片向前/后移动指定位数。如果移动位数超出数组内容,则最多移动至开头/末尾。网上找了一下没有什么好用的函数,有些很复杂而且只能移动一位,于是自己写了一个供大家参考。
<?php
$a=array('a','b','c','d','e','f','g','h','i'); //这是要操作的数组
$p='f'; //指定要移动元素'f'。
$m=-2; //把元素向前移动2位(向后为正数)。
$i=array_keys($a,$p)['0']; //读出元素索引次序
array_splice($a,(($i+$m)>0?$i+$m:0),0,array_splice($a,$i,1)); //数组移动操作
print_r($a); //输出改变后的数组
注意:本函数适用于没有重复值的数组!