in breve: ricevo un array multidimensionale dall'esecuzione di una query che io ho ricreato nell'esempio. lo script deve verificare che l'array non è vuoto ed entrare nel primo ciclo per estrapolare i dati. Per fare ciò ho inserito una variabile flag settata a 0 prima di entrare nel ciclo e subito dopo eseguo un if -> se $ris[$x]['cat_veicolo'] che di fatto è un'id è diverso da flag entra nel if inserisco la id nella variabile flag e stampo una porzione di codice, in questo caso una sezione del sito, dopo di che arrivo al secondo ciclo che dovrebbe stampare tutti i dati contenuti negli array interni con lo stesso numero id contenuto in flag. Alla fine del ciclo esco stampando la parte finale del codice per chiudere la sezione. Come se fosse una tabella, nella prima parte stampo l'intestazione, nel secondo ciclo stampo il corpo e uscendo stampo il footer. ripentendo il primo ciclo, se if trova una chiave diversa con $ris[$i]['cat_veicolo'] != $flag allora stampa una nuova sezione e ripete il procedimento altrimenti esce e incrementa l'indice $i fine ad arrivare alla fine.
Se metto $x = 0 all'interno del primo ciclo, stampa bene la prima sezione ma trovando una seconda chiave id stampa "lo scheletro ma non stampa il corpo (tramite if del secondo ciclo).
A parole forse è un po' contorto, spero sia riuscito a spiegarmi.