Corrige el error: filtrar arrays vacíos

Estoy intentando filtrar los arrays vacíos de un array. En otras palabras, quiero transformar algo que se ve así: ["a", "b", [], [], [1, 2, 3]] para que se vea así: ["a", "b", [1, 2, 3]]. Mi código se ve así:

function removeEmptyArrays($arr) {
  return array_filter($arr, "no_empty");
}

function no_empty($v) {
  if (count($v) == 0) {
    return FALSE;
  } else {
    return TRUE;
  }
}

Sin embargo, de alguna manera, las claves están desordenadas. Corrige este código incorrecto para que todas las pruebas pasen.

Ejemplos

// What I want:
removeEmptyArrays([1, 2, [], 4]) ➞ [0 => 1, 1 => 2, 2 => 4]

// What I am getting (skipped key 2!)
removeEmptyArrays([1, 2, [], 4]) ➞ [0 => 1, 1 => 2, 3 => 4]

Notas

N/A