If you're concerned about an overly complex for statement being difficult to read, that is definitely a valid concern. Wasting vertical space is also an issue (albeit a less critical one).
(Personally I dislike the rule that if statements must always have braces, which is largely the cause of the wasted vertical space here. Note that the problem is wasting vertical space. Using vertical space with meaningful lines should not be a problem.)
One option is to split it to multiple lines. This is definitely what you should do if you're using really complex for statements, with multiple variables and conditions:. (This is to me a better use of vertical space, giving as many lines as possible something meaningful.)
for ( int i = 0, j = 0; i < array.length && !condition; i++, j++ ) { // stuff } A better approach might be to try to use a more declarative and less imperative form. This will vary depending on the language, or you might need to write your own functions to enable this sort of thing. It also depends what condition actually is. Presumably it must be able to change somehow, depending on what is in the array.
array .takeWhile(condition) // condition can be item => bool or (item, index) => bool .forEach(doSomething); // doSomething can be item => void or (item, index) => void