Перестановка элементов в многомерном массиве?
$games = [
    ['a0', 'b0', 'c0'],
    ['a1', 'b1', 'c1'],
    ['a2', 'b2', 'c2'],
    ['a3', 'b3', 'c3'],
    ['a4', 'b4', 'c4']
];

$elemPos = 4;
$elemNeededPos = 1;

$new[$elemNeededPos] = $games[$elemPos];

foreach ($games as $k => $v) {
    //отсекли то, что уже забрали
    if ($k == $elemPos) continue;
    //отсекли то, что не нужно двигать
    if ($k > $elemPos && $k > $elemNeededPos || $k < $elemPos && $k <$elemNeededPos) {
        $new[$k] = $games[$k];
    } elseif ($elemPos > $elemNeededPos) {
        $new[$k + 1] = $games[$k];
    } elseif ($elemPos < $elemNeededPos) {
        $new[$k - 1] = $games[$k];
    }
}
ksort($new);

print_r($new);тесты
<?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 два раза (перед и после подстановки).. наверное, можно сделать красиво =)