Cześć. Dostaję z bazy danych listę posiłków. W każdym posiłku mam podane typ posiłku (1 - śniadanie, 2 - II śniadanie, 3 - obiad, 4 - kolacja) oraz w gramach białko, węglowodany oraz tłuszcze występujące w danym posiłku. Potrzebuję dopasować każdy z każdym posiłkiem, aby dostał pełną dietę na cały dzień. Jeden posiłek w bazie ma zapisane jako typ posiłku np. "1,2,4" - czyli może być użyty do wszystkich posiłków oprócz obiadu. Zrobiłem coś w stylu:
  1. foreach ($meal1 as $row1)
  2. {
  3. foreach ($meal2 as $row2)
  4. {
  5. foreach ($meal3 as $row3)
  6. {
  7. foreach ($meal4 as $row4)
  8. {
  9. // tutaj operacje łączenia posiłków i zapis do tablicy
  10. }
  11. }
  12. }
  13. }

W bazie jest tylko 100 posiłków, a skrypt mieli ponad 10 sekund (wcale mu się nie dziwie), co dopiero będzie, gdy będzie musiał mielić 10000 posiłków. Dlatego chciałbym spytać o jakieś lepsze rozwiązanie, macie jakieś pomysły? $meal1, $meal2, $meal3, $meal4 zawierają posiłki wyfiltrowane w zapytaniu po typie posiłku (śniadanie, II śniadanie, obiad, kolacja). Ogólnie potrzebuję to w mniej więcej takiej formie, gdyż jak już połącze każdy z każdym posiłkiem, to będę liczył ile mam białka, węglowodanów oraz tłuszczy i jak będzie mi brakować np. 20 gram białka do dziennego zapotrzebowania, to wtedy do obiadu będę dodawał przekąski (np. jogurt, banan itp.).


No chyba, że ktoś ma pomysł na optymalną zabawę z gramaturami posiłków, aby nie trzeba było dodawać przekąsek. W bazie przy posiłku mam jego wagę (w gramach), kaloryczność (w kcal) oraz ilość białek (w gramach), węglowodanów (w gramach) oraz tłuszczy (w gramach). Ale ta opcja wiem, że chyba najtrudniejsza, więc proszę o pomoc w pierwszej opcji (z przekąskami), no chyba, że ktoś ma pomysł na drugą opcję, to chętnie wysłucham propozycji.


Z góry dziękuję.