Cita: 3) y esta linea no entiendo la asignación.
$array[$x][] = pieces[$i];
¿Completa el $array[$x][], metiendole la $i ?.
Si a una variable, la finalizas con corchetes ( '[]' ) significa es se trata de un array, que el valor que asignes en ese caso se incluira como ultimo elemento.
Por Ejemplo..
Código PHP:
$arr[] = "primero";
$arr[] = "segungo";
$arr[] = "tercero";
Sera lo mismo que....
Código PHP:
$arr[0] = "primero";
$arr[1] = "segungo";
$arr[2] = "tercero";
En la documentacion de array_push() quizas lo ves mas claro.
http://www.php.net/manual/en/function.array-push.php