我想在每一步中用两个元素反转一个数组。如果我有一个数组[11,12,13,14,15,16],我想反转前两个元素[11,12]然后另外两个元素[13,14]等。最后的数组应该是[12 ,11,14,13,16,15];我的代码如下:
function reverseArray($array, $size){
$reversed_array = array();
$chunk = array_chunk($array, $size);
$chunk_length = count($chunk);
for($i = 0; $i < $chunk_length; $i++){
$reversed_array[$i] = array_reverse( ($chunk[$i]) );
}
return $reversed_array;
}
$array = array(12,13,14,15);
$size = 2;
print_r(reverseArray($array,$size));
Array
(
[0] => Array
(
[0] => 13
[1] => 12
)
[1] => Array
(
[0] => 15
[1] => 14
)
)
如何将这两个数组合并为一个?我试图使用array_merge但不知道如何在我的函数中使用它。有什么想法吗?
答案 0 :(得分:1)
您可以call_user_func_array
与array_reverse
和array_chunk
一起使用,以实现您的目标,如
$arr = [11,12,13,14,15,16];
$result = call_user_func_array('array_merge',array_reverse(array_chunk(array_reverse($arr), 2)));
print_r($result);
答案 1 :(得分:1)
function reverseArray($array, $size){
$reversed_array = array();
$chunk = array_chunk($array, $size);
$chunk_length = count($chunk);
for($i = 0; $i < $chunk_length; $i++){
$reversed_array = array_merge($reversed_array,array_reverse( ($chunk[$i]) ));
}
return $reversed_array;
}
答案 2 :(得分:0)
使用
$input = call_user_func_array('array_merge', $input);
展平数组
但是,您的代码可以简化如下,
function reverseArray($array, $size)
{
return call_user_func_array('array_merge', array_map('array_reverse', array_chunk($array, $size)));
}
答案 3 :(得分:0)
一个常见的诀窍是通过array_merge
使用call_user_func_array
。
$array = call_user_func_array("array_merge", $chunks);
将array_merge
作为参数调用$chunks[0], $chunks[1], $chunks[…]
。
您可以使用array_map
同样简化arrayReverse函数,btw:
$chunks = array_chunk($array, $size);
$chunks = array_map("array_reverse", $chunks);