Sí, configúralo en el bucle:
$array[ $row['cat_title'] ][ $row['sub_cat_id'] ] = $row['sub_cat_title'];
Pero, $array[$row['cat_title']]
Es posible que aún no esté configurado, por lo que debe agregar esta verificación de antemano:
if( !isset( $array[$row['cat_title']])) {
$array[$row['cat_title']] = array();
}
Su código original no necesita esta verificación ya que $array[]
no generará ningún aviso/advertencia, pero cuando intente establecer una clave específica, generará un aviso/advertencia si la variable aún no está declarada como una matriz.