In der Regel ist es überhaupt kein Problem zwei Umgebungen zu schachteln. Das ist sogar etwas ganz normales. Was allerdings nicht normal ist, ist die tabularx-Umgebung. Die ist ganz ähnlich wie alle amsmath-Umgebungen, wie verbatim oder lstlisting einfach sehr speziell.
Ein wenig speziell ist übrigens bereits die tabular-Umgebung selbst. Ein Problem dabei ist, dass jede Zelle einer Tabelle eine eigene Gruppe bildet. Da Umgebungen und Gruppen nur sauber in einander gesteckt aber nicht
verschränkt werden dürfen, kann man beispielsweise nicht in Spalte ein einer Tabelle eine Umgebung beginnen und diese in Spalte n dann schließen:
\begin{tabular}{ll}
\begin{flushleft} Ein & Test \end{flushleft}
\end{tabular}
Dabei würde etwas wie:
\begingroup \begin{flushleft} Ein\endgroup
...
\begingroup Test \end{flushleft}\endgroup
entstehen, was natürlich einen Fehler bedeutet. Genau so eine Situation hast Du in Deinem Codeschnippsel ebenfalls.
Deshalb sollte man Tabellenzeilen auch eher mit einem Makro also mit einer Umgebung erzeugen. Das geht so weit, dass man in bestimmten Situationen ein Hilfemakro benötigt, in dem man alle Tabellenzeilen aufsammelt, um sie dann im \end-Teil einer Umgebung auf einen Schlag zusammen mit der tatsächlichen Tabellenumgebung ausgeben zu können.
Da ich keine Ahnung habe, was Du eigentlich vor hast, kann ich Dir nur einen weiteren Hinweis geben: Du wirst Deinen Ansatz neu überdenken müssen. Eventuell wirst Du dazu noch einiges über Gruppen im TeXbook oder in TeX by Topic und eventuell auch einiges über die Funktion von tabular in der einschlägigen Literatur oder source2e nachlesen müssen. Hier werden wir Dir diesbezüglich nur helfen können, wenn Du möglichst klar und möglichst mit Beispiel erklärst, worum es Dir eigentlich geht und worauf Du hinaus willst. Nimm Dir dafür ggf. ruhig etwas Zeit.