Avatar billede wampiro-uha Nybegynder
11. oktober 2004 - 20:39 Der er 10 kommentarer og
1 løsning

Hiv nummer i array ud fra filnavn.

Jeg har et array:

$nav = array("Forside" => "index", "Om mig" => "om_mig", "Links" => "links");

Det der kommer efter => (f.eks. index i Forside) er hvad mine filer hedder (minus .php).

Hvordan laver jeg en funktion som tilgiver $i = 1 hvis jeg f.eks. befinder mig på side index.php, $i = 2 på om_mig.php osv...?
Avatar billede erikjacobsen Ekspert
11. oktober 2004 - 20:50 #1
Jo, men som du laver arrayet er det ikke en position, kun den streng
du slår op med.

<?
  $nav = array("Forside" => "index", "Om mig" => "om_mig", "Links" => "links");
                                                                                  print array_search("om_mig",$nav);
                                                                                ?>

Vil udskrive "Om mig". Men du kan lave arrayet, eller et nyt, som

<?
  $nav = array(1 => "index", 2 => "om_mig", 3 => "links");
                                                                               
  print array_search("om_mig",$nav);
                                                                               
?>

og den vil udskrive "2"
Avatar billede wampiro-uha Nybegynder
11. oktober 2004 - 21:03 #2
Er det ikke muligt på en måde at hente navnet på den side jeg er på (minus .php).
Derefter søge i array'et efter samme navn og så derudfra finde positionen?
Avatar billede erikjacobsen Ekspert
11. oktober 2004 - 21:05 #3
Ja til det første, og nej til det sidste, hvis dit array ser
ud som i dit spørgsmål - der er ingen position angivet.
Avatar billede wampiro-uha Nybegynder
11. oktober 2004 - 21:14 #4
Hmm... Det er lidt et problem da jeg skal bruge i position 1 både Forside og index.
Avatar billede erikjacobsen Ekspert
11. oktober 2004 - 21:26 #5
Jamen så må du registrere positionen på en eller anden måde, fx
i et nyt array. I et array hvor du slår med en streng, fx. "Om mig"
er der ingen position.
Avatar billede sukos Juniormester
11. oktober 2004 - 21:26 #6
Jah, du kan lave dit array på denne måde

$nav = array(1 => array("Forside" => "index"), 2 => array("Om mig" => "om_mig"), 3 => array("Links" => "links"));
Avatar billede sukos Juniormester
11. oktober 2004 - 21:45 #7
Kan måske gøres på en anden måde, men noget a'la'

$nav = array(1 => array("Forside" => "index"), 2 => array("Om mig" => "om_mig"), 3 => array("Links" => "links"));

if(isset($_GET["vis"]) && true == @$nav[$_GET["vis"]]) {
while(list($key, $value) = each($nav[$_GET["vis"]])) {
$text = $key;
$fil = $value;
}
}else{
while(list($key, $value) = each($nav[1])) {
$text = $key;
$fil = $value;
}
}
echo $text ." - ". $fil;
Avatar billede wampiro-uha Nybegynder
11. oktober 2004 - 21:49 #8
Hvad nu hvis jeg vil droppe alt det med tal, men derimod bare have en funktion som, hvis jeg er på index.php sætter $title = "Forside", hvis jeg er på om_mig.php sætter $title = "Om mig" osv...
Avatar billede wampiro-uha Nybegynder
11. oktober 2004 - 22:12 #9
Hvad er der galt her:

switch(basename($_SERVER['PHP_SELF'])) {
  case "index.php": $i = "1";
  break;
  case "om_mig.php": $i = "2";
  break;
  case "links.php": $i = "3";
  break;
  case "topliste.php": $i = "4";
  break;
  case "andet.php": $i = "5";
  break;
  case "kontakt.php": $i = "6";
  break;
  default: $i = "1";
  break;
}

Den bliver altid lig 6, altså $i bliver sat til 6 altid?
Avatar billede wampiro-uha Nybegynder
11. oktober 2004 - 22:14 #10
Ok, lige meget. LAvede en dum fejl selv i min senere kode.
Jeg bruger den switch-sætning.
Avatar billede erikjacobsen Ekspert
11. oktober 2004 - 22:16 #11
Nej, $i bliver ikke altid 6. Måske bruger du $i til noget andet også?
Prøv evt et andet navn.
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Vi tilbyder markedets bedste kurser inden for webudvikling

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester