Pues según tu código lo haces al revés.
Código PHP:
// MAL
if ( $value == 'X' )
Esto está mal porque si no quieres dichos registros no deberías condicionarlos si quiera.
Código PHP:
// BIEN
if ( $value == 'A' )
Eso tiene más sentido, pues únicamente quieres copiar los registros A.
El unset() es innecesario pues sólo debes ignorar dicho array.
Además deberías comparar antes de agregar.
Código PHP:
foreach ($children as $child) {
if ($child['estado'] !== 'X') {
// OK
}
}
¿No te parece más lógico?