Por favor, explica mas a detalle los resultados que obtienes, no vamos a ejecutar tu código sencillamente para entender lo que ya sabes.
Además tampoco vas depurando lo que haces, si no inspeccionas las variables que generas entonces no te enteras de si funciona o no.
Usa var_dump() para depurar tus arrays, eso te ayudará a ver tu error.
Sobre todo es curiosa tu condición aquí:
Es decir, inicialmente $b es igual a 1, pero luego $b será igual que $z e incrementas $b por 1, luego entonces $b vuelve a ser $z y se incrementa por uno, pero estás incrementando $b y $z no se afecta, es decir, no tiene sentido tu lógica.
En esos casos es que te sirve mejor foreach(), agrega esto antes de dicho ciclo, después de crear tu array $vec.
¿Qué muestra?