Se usassi array_filter, mi troverei come prima chiave dei numeri non ordinati, perchè mancherebbero tutti i numeri per i quali il parent_id di $aMenuApp è diverso da 2.
Cerco di fare un esempio, così si capisce meglio... 
Mettiamo che ho:
Codice PHP:
$aMenuApp[0][parent_id]=0;
$aMenuApp[0][title]="Primo";
$aMenuApp[1][parent_id]=2;
$aMenuApp[1][title]="Secondo";
$aMenuApp[2][parent_id]=1;
$aMenuApp[2][title]="Terzo";
$aMenuApp[3][parent_id]=2;
$aMenuApp[3][title]="Quarto";
Vorrei ottenere un altro array così formato:
Codice PHP:
$aMainMenu[0][parent_id]=2;
$aMainMenu[0][title]="Secondo";
$aMainMenu[1][parent_id]=2;
$aMainMenu[1][title]="Quarto";
Capito? 
Quello che non capisco è perchè col codice nel primo post, quando lo eseguo mi stampa sempre:
E il primo c'è...
E invece il secondo no!
Praticamente non riesce a riempire l'array $aMainMenu... perchè???