Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [PHP]Dynamiczne sprawdzenie ostatniego elementu tablicy
mattix19
post
Post #1





Grupa: Zarejestrowani
Postów: 32
Pomógł: 0
Dołączył: 11.07.2010

Ostrzeżenie: (0%)
-----


Witam
Stworzyłem sobie taki oto kod na potrzeby menu mojej stronki:
  1. $sql = 'SELECT * FROM pages';
  2. $query = mysql_query($sql) or die('Nie wykonałem polecenia '.$sql.mysql_error());
  3. if(mysql_num_rows($query) != 0){
  4. $this_page = basename($_SERVER['PHP_SELF']);
  5. while($row = mysql_fetch_array($query)){
  6. $pages = array($row['title']=>$row['link']);
  7. foreach($pages as $k=>$v){
  8. echo '<li ';
  9. if($this_page == $v) echo "id='current' ";
  10. if(end($pages)){echo 'class="last"';}else{echo ' ';}
  11. echo '><a href="'.$v.'"><span>'.$k.'</span></a></li>';
  12. } }
  13. }else{echo '<li id="current">Brak stron :(</li>';}


i chcialbym sprawdzic ostatni element mojej tablicy
  1. $pages
. Znalazlem w manualu funkcje
  1. end()
lecz jak logika nakazuje ostatni element wyswietli mi dopiero po skonczeniu sie petli while ale ja chcialbym to sprawdzic jeszcze w petli i wtedy przy pomocy if dopisac do li klasę. Wiem ze trzeba bedzie przerobic ten kod lecz nie mam pomyslu jak to zrobic, dlatego pytam tu. Nie prosze o gotowca lecz jedynie nakierowanie mnie jak to zmienic zebym zadzialalo
pozdrawiam
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi
Adi32
post
Post #2





Grupa: Zarejestrowani
Postów: 348
Pomógł: 26
Dołączył: 8.10.2008
Skąd: Lublin

Ostrzeżenie: (0%)
-----


Swego czasu uczyniłem takie funkcyjki:

  1. function first($array,$key)
  2. {
  3.  
  4. reset($array);
  5.  
  6. if(key($array) == $key)
  7. return true;
  8.  
  9. return false;
  10.  
  11. }
  12.  
  13. function last ($array,$key)
  14. {
  15.  
  16. end($array);
  17.  
  18. if(key($array) == $key)
  19. return true;
  20.  
  21. return false;
  22.  
  23. }


Sposób wykorzystania:

  1.  
  2. $array = array(
  3. key1 = value1,
  4. key2 = value2,
  5. key3 = value3,
  6. key4 = value4,
  7. );
  8.  
  9. foreach ($array as $key => $value) {
  10.  
  11. if (first($array,$key)) {
  12. // first element
  13. }
  14.  
  15. if (!first($array,$key)) {
  16. // not first element
  17. }
  18.  
  19. if (last($array,$key)) {
  20. // last element
  21. }
  22.  
  23. if (!last($array,$key)) {
  24. // not last element
  25. }
  26.  
  27. }
  28.  


A ruszają głową można uzyskać przedostatni element, drugi, 4 od końca itd.
Są małe problemy jak jest np 1 element.

Ten post edytował Adi32 9.12.2011, 08:16:51
Go to the top of the page
+Quote Post

Posty w temacie


Reply to this topicStart new topic
2 Użytkowników czyta ten temat (2 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 9.10.2025 - 12:56