Cytat(mattix19 @ 9.12.2011, 01:08:33 )

Witam
Stworzyłem sobie taki oto kod na potrzeby menu mojej stronki:
$sql = 'SELECT * FROM pages';
$this_page = basename($_SERVER['PHP_SELF']); $pages = array($row['title']=>$row['link']); foreach($pages as $k=>$v){
if($this_page == $v) echo "id='current' "; echo '><a href="'.$v.'"><span>'.$k.'</span></a></li>'; } }
}else{echo '<li id="current">Brak stron :(</li>';}
i chcialbym sprawdzic ostatni element mojej tablicy
$pages
. Znalazlem w manualu funkcje
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
$sql = 'SELECT title , link FROM pages';
$a = 1;
if($ile_pozycji >= 1){
$this_page = basename($_SERVER['PHP_SELF']); $title = $row['title'];
$link = $row['link'];
if($this_page == $link)
if($a == $ile_pozycji)
echo '><a href="'.$link.'"><span>'.$title.'</span></a></li>'; $a++;
}
}
else
echo '<li id="current">Brak stron :(</li>';
Taki utrudnianie sobie życia ... szukanie na siłę funkcji które w praktyce i tak nic nam nie dają... Jak coś istnieje to nie znaczy że jest to dobre. Kod pisany z ręki. Mogą być błędy.
Ta funkcja end() nigdy o niej nie słyszałem i jakoś żyłem dobrze bez niej... Radzę sobie bez tego i jak widać daję radę ;]
Gdybyś miał problem lub błędy wal na PW.
Cytat(Adi32 @ 9.12.2011, 08:16:07 )

Swego czasu uczyniłem takie funkcyjki:
function first($array,$key)
{
return true;
return false;
}
function last ($array,$key)
{
return true;
return false;
}
Sposób wykorzystania:
key1 = value1,
key2 = value2,
key3 = value3,
key4 = value4,
);
foreach ($array as $key => $value) {
if (first($array,$key)) {
// first element
}
if (!first($array,$key)) {
// not first element
}
if (last($array,$key)) {
// last element
}
if (!last($array,$key)) {
// not last element
}
}
A ruszają głową można uzyskać przedostatni element, drugi, 4 od końca itd.
Są małe problemy jak jest np 1 element.
Adi nie wątpię że znasz się na rzeczy ale to jest właśnie przykład utrudniania sobie kodu... Wystarczy jedna zmienna ( w tym przypadku $a) którą za każdym ruchem przeliczamy i nie ma szans z problemem odnośnie jednej lub miliona pozycji

A skrypt traci może 0,00000000000001 setną na dodanie do poprzedniej wartości $a jeden.
Prostsza wersja twojego kodu
function last($ilosc_pozycji , $obecna){
if ($ilosc_pozycji == $obecna)
return true;
else
return false;
}
// Używamy na kodzie kolegi który założył temat....
$sql = 'SELECT title , link FROM pages';
$a = 1;
if($ile_pozycji >= 1){
$this_page = basename($_SERVER['PHP_SELF']); $title = $row['title'];
$link = $row['link'];
if($this_page == $link)
if(last($ile_pozycji , $a) === true)
echo '><a href="'.$link.'"><span>'.$title.'</span></a></li>'; $a++;
}
}
else
echo '<li id="current">Brak stron :(</li>';