Avatar billede Bente-Hedegaard Nybegynder
06. februar 2010 - 23:48 Der er 7 kommentarer

Array to Lower, PHP

Hej jeg har et problem,
jeg vil gerne have at arrayets værdier
er sat til lower, mens jeg søger efter dataen i mit in_array.
Det eneste jeg kan finde er array_change_key_case,
men det er ikke key'en jegvil ændre men værdierne.

Sådan at når jeg eks søger Cola, så laver den det om til cola med strtolower, og i arrayet hedder det COLA, det skal så laves om til cola, sådan at de passer sammen.
Men det skal kun være mens man søger,
for efter at der er blevet søgt skal den igen kunne udskrive det med store og små bogstaver.

Håber i kan hjælpe mig,
for det har irriteret mig i nogle timer snart heh.

Mvh. Bente
Avatar billede Bente-Hedegaard Nybegynder
06. februar 2010 - 23:49 #1
<form method="post" action="index.php?klik=ja">
    Søg efter en drik
    <input type="text" name="felt"/>
    <br />
    <input type="submit" value="Søg"/>
</form>
<br />
<?php
$klik = isset($_GET['klik'])?$_GET['klik']:"";
$felt = isset($_POST['felt'])?$_POST['felt']:"tom";
$drikke = array("COLA","Pepsi","Pepsi Twist","Sprite","Fanta","Danskvand");
$antal = count($drikke);

if($klik == "ja" and $felt != ""){
    if (in_array(strtolower($felt), $drikke)){
        echo "Jep, vi har ".$felt." på lager";
    }else{
        echo "Vi har desværre ikke ".$felt." på lager";
        echo "<br />Men du kan vælge mellem en af følgende drikke:<br />";
        foreach($drikke as $drik){
            echo "<br />".$drik;
        };
    };
}elseif($klik == "ja" and $felt == ""){
    echo "Der er trykket på knappen men feltet var tomt";
}else{
    echo "Der er ikke trykket på submit";
};
echo "<br /><br />Husk at der altid er ".$antal." forskellige drikke at vælge imellem";
?>
Avatar billede a2p-dk Nybegynder
06. februar 2010 - 23:52 #2
har du prøvet strtolower() på $drikke??
Avatar billede Bente-Hedegaard Nybegynder
06. februar 2010 - 23:55 #3
Jep, det kan man ikke da det er et array
Avatar billede ksoren Nybegynder
07. februar 2010 - 00:05 #4
http://php.net/manual/en/function.in-array.php

I noterne er der givet flere eksempler på, hvordan man kan lave en case insensitive søgning
Avatar billede a2p-dk Nybegynder
07. februar 2010 - 00:06 #5
Jeg søgte lige inde på google.dk og fandt http://php.net/manual/en/function.strtolower.php hvis du kigger på dbers26 at gmail dot com 07-Jan-2009 09:34 ser du at der er blevet lavet en funktion der gør dette:
---
<?php
$array = array('test1' => 'asgAFasDAAd', 'TEST2' => 'ASddhshsDGb', 'TeSt3 '=> 'asdasda@asdadadASDASDgh');

$array = arraytolower($array);
?>
/*
Array
(
    [test1] => asgafasdaad
    [TEST2] => ASddhshsDGb
    [TeSt3] => asdasda@asdadadASDASDgh
    [test2] => asddhshsdgb
    [test3] => asdasda@asdadadasdasdgh
)
*/

I prefer this method

<?php
  function arraytolower($array, $include_leys=false) {
 
    if($include_leys) {
      foreach($array as $key => $value) {
        if(is_array($value))
          $array2[strtolower($key)] = arraytolower($value, $include_leys);
        else
          $array2[strtolower($key)] = strtolower($value);
      }
      $array = $array2;
    }
    else {
      foreach($array as $key => $value) {
        if(is_array($value))
          $array[$key] = arraytolower($value, $include_leys);
        else
          $array[$key] = strtolower($value); 
      }
    }
 
    return $array;
  }
?>
Avatar billede a2p-dk Nybegynder
07. februar 2010 - 00:14 #6
Avatar billede Bente-Hedegaard Nybegynder
07. februar 2010 - 00:26 #7
ksoren, fandt en mulighed inde i det link du sendte,
læg et svar og få point.

Endte med at gøre sådan her:
if (in_array(strtolower($felt), array_map('strtolower', $drikke)))
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
Kurser inden for grundlæggende programmering

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