Vad är det för fel på koden nedan?
Endast "A" till "Z" visas.
for ($i = 97; $i < 123; ++$i)
{
$l = chr($i);
$L = chr($i - 32);
if ($l == $letter)
print("<b>$L</b>\n");
else
print("<a href=?bokstav=$l><b>$L</b></a>\n");
}
7 svar · 432 visningar · startad av Guldstrand
Vad är det för fel på koden nedan?
Endast "A" till "Z" visas.
for ($i = 97; $i < 123; ++$i)
{
$l = chr($i);
$L = chr($i - 32);
if ($l == $letter)
print("<b>$L</b>\n");
else
print("<a href=?bokstav=$l><b>$L</b></a>\n");
}
$L är ju stor bokstav. Vad förväntar du dig att se?
$L är ju stor bokstav. Vad förväntar du dig att se?
Eh.. ja!?
Jag vill givetvis kunna se ÅÄÖ också, (inte bara a-z).
97-122 samt (97-32)-(122-32) är ascii-koderna för a-z och A-Z. Att åäö inte finns i direkt anslutning beror på att ascii inte är designat efter det svenska alfabetet. ÅÄÖ hittar du i en utökad ascii-tabell, se ex. http://www.asciitable.com/.
Kanske:
<?php
$param = "å";
$letters = preg_split("//u", "abcdefghijklmnopqrstuvwxyzåäö", 0, PREG_SPLIT_NO_EMPTY);
foreach($letters as $letter){
$ucase = mb_strtoupper($letter, "UTF-8");
if($letter == $param){
printf("<b>%s</b>" . PHP_EOL, $ucase);
}
else{
printf("<a href=\"?bokstav=%s\"><b>%s</b></a>" . PHP_EOL, $letter, $ucase);
}
}
Hur löser jag det enklast om jag vill använda mig av den befintliga koden?
if ($letter == "" || strpos("abcdefghijklmnopqrstuvwxyzåäö", $letter) === false)
$letter = "a";
for ($i = 97; $i < 123; ++$i)
{
$l = chr($i);
$L = chr($i - 32);
if ($l == $letter)
print("<b>$L</b>\n");
else
print("<a href=?bokstav=$l><b>$L</b></a>\n");
}
Du byter ut if-satsen. Och använd inte dubbelflärpar " om du inte måste, enkelflärpar ' körs snabbare.
for ($i = 97; $i < 123; ++$i)
{
$l = chr($i);
$L = chr($i - 32);
if($letter != '' && strpos('abcdefghijklmnopqrstuvwxyzåäö', $letter) !== false)
print("<b>$L</b>\n");
else
print("<a href=?bokstav=$l><b>$L</b></a>\n");
}
Fast varför vill du inte använda koden jag postade? Den ger samma resultat som din fast den är enklare uppbyggd och du slipper göra massa undantag för att den ska funka med åäö.