Avatar billede thb Nybegynder
27. januar 2004 - 20:10 Der er 18 kommentarer og
1 løsning

problem med udskrivning af array

Hej alle

Jeg er ved at lave noget med sprog på min hjemmeside.
jeg har lavet et array som hedder sprog:

$sprog = array();
$sprog['da']['navn'] = "Dansk";
$sprog['da']['grafik'] = "";
$sprog['en']['navn'] = "English";
$sprog['en']['grafik'] = "";

nu vil jeg så godt have at det skal blive udskrivet sådan at hvis grafik ikke indeholder noget så skal den bare udskrive:

Dansk - English

eller skal den udskrive 2 grafik bidder..

Er der nogle der kan hjælpe mig med det.. har prøvet på forskellige måder med for() og foreach() men har ikke lige kunne få det til at lykkedes..

Thomas
Avatar billede taskmgr Nybegynder
27. januar 2004 - 20:22 #1
Skal den tjekke allesammen, eller kun én af nøglerne?

Altså hvis $sprog['da']['grafik'] er forskellig fra "", men den anden ikke er, hvad skal der så ske?
Avatar billede thb Nybegynder
27. januar 2004 - 20:25 #2
Det var et godt spm.. :) Den havde jeg ikke tænkt på... :)

men et svar på det spm må være at så udskriver den bare tekst..
Tror nemlig ikke at det vil ske.. :)

Thomas
Avatar billede taskmgr Nybegynder
27. januar 2004 - 20:47 #3
$tjek = 0;

foreach($sprog as $key)
  if($sprog[$key]['grafik'] == "") {
    $tjek = 1;
  }
}

Så vil $tjek være 1 hvis en af $sprog[]['grafik'] er lig med ""
Avatar billede taskmgr Nybegynder
27. januar 2004 - 20:49 #4
Så kan du efterfølgende gøre noget lig:

if ($tjek == 1) {
  echo "Dansk - Engelsk";
} else if ($tjek == 0) {
  //vis din grafik
}
Avatar billede thb Nybegynder
27. januar 2004 - 20:57 #5
Det er jo ikke generelt..

Den skal køre arrayet igennem og udskrive alle tingene i det.. det kan jo godt være at der er 3-4-5 sprog...

Thomas
Avatar billede taskmgr Nybegynder
27. januar 2004 - 21:03 #6
Det ka godt være at jeg er lidt tungnem, men jeg har svært ved at forstå det... :)

foreach($sprog as $key)
  if($sprog[$key]['grafik'] == "") {
    $tjek = 1;
  }
  foreach($sprog[$key] as $key2 => $value){
    echo $key2 " => " . $value . "<br />";
  }
}

men jeg tror stadig ikke at jeg har forstået dig.
Avatar billede taskmgr Nybegynder
27. januar 2004 - 21:04 #7
foreach($sprog as $key)
  if($sprog[$key]['grafik'] == "") {
    $tjek = 1;
  }
  foreach($sprog[$key] as $key2 => $value){
    echo $key2 . " => " . $value . "<br />";
  }
}
Avatar billede taskmgr Nybegynder
27. januar 2004 - 21:06 #8
Den ovenstående kode er helt i udu ka jeg se... kigger lige på det
Avatar billede taskmgr Nybegynder
27. januar 2004 - 21:07 #9
foreach($sprog as $key => $value) {
  if($sprog[$key]['grafik'] == "") {
    $tjek = 1;
  }
  foreach($sprog[$key] as $key2 => $value2){
    echo $key2 . " => " . $value2 . "<br />";
  }
}
Avatar billede thb Nybegynder
27. januar 2004 - 21:08 #10
jeg skal have en udskrift som ser sådan her ud Dansk - English hvis mit array ser således ud..

$sprog['da']['navn'] = "Dansk";
$sprog['da']['grafik'] = "";
$sprog['en']['navn'] = "English";
$sprog['en']['grafik'] = "";

jeg har prøvet med denne kode..

foreach($sprog as $v1){
  foreach ($v1 as $v2) {
    printf("<td><a href=>%s</a></td>",empty($v1[$v2]['grafik']) ? $v1[$v2]['navn'] : "<img src=\"". $v1[$v2]['grafik'] ."\" border=\"0\">");
  }
}

Thomas
Avatar billede taskmgr Nybegynder
27. januar 2004 - 21:15 #11
Aha.. nu forstod jeg lidt mere.

Prøv med:

foreach($sprog as $v1 => $value){
  foreach ($sprog[$v1] as $v2) {
    printf("<td><a href=>%s</a></td>",empty($sprog[$v1]['grafik']) ? $v1[$v2]['navn'] : "<img src=\"". $v1[$v2]['grafik'] ."\" border=\"0\">");
  }
}
Avatar billede taskmgr Nybegynder
27. januar 2004 - 21:21 #12
Fik ikke helt de andre med

foreach($sprog as $v1 => $value){
  foreach ($sprog[$v1] as $v2) {
    printf("<td><a href=>%s</a></td>",empty($sprog[$v1]['grafik']) ? $sprog[$v1]['navn'] : "<img src=\"". $sprog[$v1]['grafik'] ."\" border=\"0\">");
  }
}
Avatar billede thb Nybegynder
27. januar 2004 - 21:32 #13
det ser meget godt ud...

Nu udskriver den bare danskdanskenglishenglish
Avatar billede taskmgr Nybegynder
27. januar 2004 - 21:45 #14
Ok, det skal heller ik gøres mere besværligt end det er.

Nu bliver der først tjekket om en 'grafik' nøgle er tom, hvis ingen af dem er det, bliver hver grafik skrevet ud. Hvis der findes en tom, så bliver navnene skrevet ud.

<?php
$sprog['da']['navn'] = "Dansk";
$sprog['da']['grafik'] = "1";
$sprog['en']['navn'] = "English";
$sprog['en']['grafik'] = "1";

$tjek = 0;

foreach($sprog as $key => $val){
  if($sprog[$key]['grafik'] == "") {
    $tjek = 1;
  }
}

if ($tjek == 0) {
    foreach($sprog as $v1 => $value){
            echo "<img src=\"" . $sprog[$v1]['grafik'] . "\" alt=\"\" border=\"0\" />";
    }
} elseif ($tjek == 1) {
    foreach($sprog as $v1 => $value) {
        echo $sprog[$v1]['navn'] . " ";
    }
}

?>
Avatar billede thb Nybegynder
27. januar 2004 - 23:40 #15
Det er meget fint... :)

Hvis du så lige smider et svar.. :)

Thomas
Avatar billede thb Nybegynder
27. januar 2004 - 23:44 #16
Lige en ting mere som du måske kan hjælpe mig med..

Hvis jeg så når folk har trykket på et sprog, skifter en session og så skal folk smides tilbage til den side de kom fra..
Så ville jeg lave *.php?link=enside.php?mode=blahblah men så kommer der en fejl, ikk ?

Hvordan laver jeg det.. ??

Thomas
Avatar billede schaefner Juniormester
27. januar 2004 - 23:46 #17
.php?link=enside.php&mode=blahblah
Avatar billede taskmgr Nybegynder
27. januar 2004 - 23:50 #18
Her har du et svar.
Er tilbage i morgen hvis der er brug for mere hjælp :)

Mikkel Rostved
Avatar billede thb Nybegynder
27. januar 2004 - 23:53 #19
schaefner > Så kan mode jo lige så godt høre til den existerende php fil...
hvis man kunne ville jeg skrive det sådan: .php?link='endfil.php?mode=blahblah'

Håber at det gav lidt mere mening..

Thomas
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