<?php
$content = [
0 => [10,15,20],
1 => [10,20,15],
2 => [15,10,20],
3 => [15,20,10],
4 => [20,10,15],
5 => [20,15,10],
];
$a = 1;
$b = 5;
echo json_encode($content), PHP_EOL, sprintf('$a=%d, $b=%d', $a, $b), PHP_EOL;
$raw_a = array_slice($content, 0, $a); // часть массива до $a
$raw_b = array_slice($content, $a+1, $b-$a-1); // часть массива между $a и $b
$raw_c = array_slice($content, $b+1); // часть массива после $b
// echo json_encode(['a'=>$raw_a, 'b'=>$raw_b, 'c'=>$raw_c]), PHP_EOL;
$result = array_merge($raw_a, [$content[$b]], $raw_b, [$content[$a]], $raw_c);
echo json_encode($result), PHP_EOL;
как это переделать, если $b < $a - думай сам =) есть вариант в лобовую - [$a, $b] = [$b, $a] и array_reverse на $content два раза (перед и после подстановки).. наверное, можно сделать красиво =)