I due punti sono una sintassi standard di php:
O scrivi:
foreach() {}
o scrivi:
foreach():
endforeach;
è una sintessi che io preferisco, perchè le parentesi graffe son tutte uguali e se hai un if annidato dentro un for annidato dentro un while, ti sfido a capire quale graffa chiude quale costrutto!
Si, il doppio $ è per avere una variabile identificata da un nome contenuto a sua volta in un'altra veriabile, anche se ti confesso che io avrei usato un array più generale con una dimensione i più e via...
$dati["alias"][][]
$dati["pinco"][][]
e così via...