将最后三个元素从php数组移动到前三个
我试图移动数组的最后三个元素,成为前三个元素。这可能吗?数组是可变的,这取决于您所处的页面,但它的外观如下所示:将最后三个元素从php数组移动到前三个,php,arrays,Php,Arrays,我试图移动数组的最后三个元素,成为前三个元素。这可能吗?数组是可变的,这取决于您所处的页面,但它的外观如下所示: Array ( [4] => 1 [2] => 2 [3] => 6 [5] => 9 [0] => 10 [1] => 11 ) 我需要的是: Array ( [5] => 9 [0] => 10 [1] => 11 [4] => 1
Array
(
[4] => 1
[2] => 2
[3] => 6
[5] => 9
[0] => 10
[1] => 11
)
我需要的是:
Array
(
[5] => 9
[0] => 10
[1] => 11
[4] => 1
[2] => 2
[3] => 6
)
任何帮助都将不胜感激。数组的长度每页也会有所不同,因此我不能100%确定如何处理。用于提取和插入数组中的元素序列
array_splice($array, 0, 0, array_splice($array, -3));
array\u splice($array,-3)
删除数组的最后3个元素并将其作为数组返回。然后array\u拼接($array,0,0,)
在数组的开头插入该数组
请注意,这不会保留关联数组的键,这在您的示例中似乎是必要的。为此,可以使用中定义的array\u rotate
函数
函数数组旋转($array,$shift){
如果(!is_数组($array)| |!is_数值($shift)){
if(!is_array($array))错误_日志(_函数要求第一个参数为array;'。gettype($array)。'received');
如果(!is_numeric($shift))错误日志(__函数要求第二个参数为数值;'.gettype($shift)。“`shift`已收到');
返回$array;
}
$shift%=count($array);//我们不会尝试移动超过一个数组长度
if($shift<0)$shift+=count($array);//将负移位处理为正移位
返回array_merge(array_slice($array,$shift,NULL,true),array_slice($array,0,$shift,true));
}
用于提取和插入数组中的元素序列
array_splice($array, 0, 0, array_splice($array, -3));
array\u splice($array,-3)
删除数组的最后3个元素并将其作为数组返回。然后array\u拼接($array,0,0,)
在数组的开头插入该数组
请注意,这不会保留关联数组的键,这在您的示例中似乎是必要的。为此,可以使用中定义的array\u rotate
函数
函数数组旋转($array,$shift){
如果(!is_数组($array)| |!is_数值($shift)){
if(!is_array($array))错误_日志(_函数要求第一个参数为array;'。gettype($array)。'received');
如果(!is_numeric($shift))错误日志(__函数要求第二个参数为数值;'.gettype($shift)。“`shift`已收到');
返回$array;
}
$shift%=count($array);//我们不会尝试移动超过一个数组长度
if($shift<0)$shift+=count($array);//将负移位处理为正移位
返回array_merge(array_slice($array,$shift,NULL,true),array_slice($array,0,$shift,true));
}
请注意,
数组拼接
不保留数字键(根据OP示例,情况似乎是这样的)。如果您需要,这也可以:
$array1 = array
(
4 => 1,
2 => 2,
3 => 6,
5 => 9,
0 => 10,
1 => 11
);
$array2 = array_slice($array1, -3, 3, true) + $array1;
而$array2将是:
Array
(
[5] => 9
[0] => 10
[1] => 11
[4] => 1
[2] => 2
[3] => 6
)
请注意,
array\u splice
不保留数字键(根据OP示例,情况似乎是这样的)。如果您需要,这也可以:
$array1 = array
(
4 => 1,
2 => 2,
3 => 6,
5 => 9,
0 => 10,
1 => 11
);
$array2 = array_slice($array1, -3, 3, true) + $array1;
而$array2将是:
Array
(
[5] => 9
[0] => 10
[1] => 11
[4] => 1
[2] => 2
[3] => 6
)
尝试在临时数组中弹出并添加这3个项目,然后使用array_unshift()对它们进行预处理。这只是一个友好的提示,您可能需要阅读本页:这样您就可以始终确保您的问题易于回答且尽可能清楚。请确保包括您为解决问题所做的任何努力,以及在尝试这些修复时发生的情况。另外,不要忘记查看您的代码和任何错误消息!尝试在临时数组中弹出并添加这3个项目,然后使用array_unshift()对它们进行预处理。这只是一个友好的提示,您可能需要阅读本页:这样您就可以始终确保您的问题易于回答且尽可能清楚。请确保包括您为解决问题所做的任何努力,以及在尝试这些修复时发生的情况。另外,不要忘记查看您的代码和任何错误消息@没错,它不会保留钥匙。我添加了一个函数,它不保留关键点。我添加了一个函数,它可以。