Zkus si zapnout error_reporting. Mozna ti to hlasi nejakou chybu.
Pri zbeznem pohledu mne napada, ze nemuzes prirazovat jako do pole hodnotu, pokud dane pole jeste neexistuje.
$user['service'][$service->name] = 0;
Nikde driv ale nemas definovane
$user['service'] = cokoliv // treba array();
takze to vyhlasi error $user['service'] undefined, hadam, a ignoruje to ten kod.
Kdezto druhy kod ma
$var = $user['services']; ,
ktery vytvori $user['services'], ulozi hodnotu null a priradi do promene link na do pole. Dal se to pak uz pretypuje na pole pri prirazeni dalsi hodnoty v kaskade. Mozna by tedy stacilo misto toho cokoliv jen napsat $user['service'];