Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP] Sprawdzanie poprzedniej wartości w tablicy
Forum PHP.pl > Forum > Przedszkole
calkiemzielony
Witam.
Nijak nie wiem jak się zabrać do tego.

Z pliku tekstowego który jest bazą kategorii w postaci:
Kod
categoryPath1|categoryName1|0|
categoryPath2|categoryName2|1|
categoryPath3|categoryName3|2|
categoryPath4|categoryName4|2|
categoryPath5|categoryName5|1|
categoryPath6|categoryName6|2|
categoryPath7|categoryName7|0|
categoryPath8|categoryName8|1|
categoryPath9|categoryName9|1|


uzyskuję coś na kształt:

  1. $plik = file('categories.base');
  2. foreach($plik as $data)
  3. {
  4. $dta = explode('|', $data);
  5. echo "<li class='indent".$dta[2]."'><a href=\"".$dta[0]."\">".$dta[1]."</a></li>\n";
  6. }


Jednak potrzebowałbym uzyskać zagłębioną listę w oparciu o poziom zagłębienia z trzeciej kolumny, coś takiego:
  1. <ul>
  2. <li><a href="categoryName1">categoryName1</a></li>
  3. <ul>
  4. <li><a href="categoryName2">categoryName2</a></li>
  5. <ul>
  6. <li><a href="categoryName3">categoryName3</a></li>
  7. <li><a href="categoryName4">categoryName4</a></li>
  8. </ul>
  9. <li><a href="categoryName5">categoryName5</a></li>
  10. <ul>
  11. <li><a href="categoryName6">categoryName6</a></li>
  12. </ul>
  13. </ul>
  14. <li><a href="categoryName7">categoryName7</a></li>
  15. <ul>
  16. <li><a href="categoryName8">categoryName8</a></li>
  17. <li><a href="categoryName9">categoryName9</a></li>
  18. </ul>
  19. </ul>


Nie mam pojęcia jak sprawdzić poprzednią wartość.
Proszę o pomoc
prz3kus
Nie możesz do tej swojej super bazy textowej dopisac jeszcze jednej kolumny z np. id rodzica zamiast tej dziwnej numeracji?
W obecny spoób to pewnie ratują Cię tylko magiczne if-y i rzeźba w G.. :]
calkiemzielony
Cytat(prz3kus @ 18.05.2015, 09:14:41 ) *
Nie możesz do tej swojej super bazy textowej dopisac jeszcze jednej kolumny z np. id rodzica zamiast tej dziwnej numeracji?
W obecny spoób to pewnie ratują Cię tylko magiczne if-y i rzeźba w G.. :]


Póki co, to dostaję takie dane z zewnątrz i na tym muszę pracować.

A ta dziwna numeracja nie jest aż tak dziwna, bo to nic innego jak poziom zagłębienia. Dlatego pomyślałem żeby sprawdzać poprzednie i jeżeli miałoby mniejszą wartość to oznaczałoby że jest rodzicem, taka sama wartość - brat, wyższa wartość - dziecko.

Ściślej, baza jest w postaci:
Kod
categoryPath1|categoryName1|0|
categoryPath1/categoryName2|categoryName2|1|
categoryPath1/categoryPath2/categoryPath3|categoryName3|2|
categoryPath1/categoryPath2/categoryPath4|categoryName4|2|
categoryPath1/categoryPath5|categoryName5|1|
categoryPath1/categoryPath5/categoryPath6|categoryName6|2|
categoryPath7|categoryName7|0|
categoryPath7/categoryPath8|categoryName8|1|
categoryPath7/categoryPath9|categoryName9|1|

więc ostatnia kolumna zawiera jedynie informację o poziomie zagłębień.
Pyton_000
  1. $prev = 0;
  2. foreach($tablica as $t):
  3.  
  4. if($t[3] > $prev):
  5. // Do sth
  6. endif;
  7.  
  8. $prev = $t[3];
  9. endforeach;
calkiemzielony
Cytat(Pyton_000 @ 18.05.2015, 09:46:44 ) *
  1. $prev = 0;
  2. foreach($tablica as $t):
  3.  
  4. if($t[3] > $prev):
  5. // Do sth
  6. endif;
  7.  
  8. $prev = $t[3];
  9. endforeach;


Dziękuję Pyton_000. Zaiste, zaćmienie moje było porażające przy tak banalnym rozwiązaniu sciana.gif .
Trzy if'y i teraz pięknie się smaruje ładna zagnieżdżona lista.
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.