webForumDet fria alternativet

Kolla mot en array

PHPur PHP

4 svar · 216 visningar · startad av fluff

Medlem sedan juli 200268 inlägg
Frågan#1

TjO.

Om man har en lista t.ex så här:

$lista = {1,2,4,5,19,24}

Sen har man $key = 3, då ska $lista[1] (värde 2) väljas ut, alltså det numret som är närmast över $key.. (om inte $key värdet finns, då får man det elementet istället)

precis som $lista[4] (värde 19) skulle returneras om man angav $key=20.

$lista är förstås dynamiskt, och fylld ett tiotal nummer.

Hur ska man tänka för att få detta att fungera, jag förstår inte riktigt hur man ska gå igenom och kolla, och hur man ska bygga upp det :\

Medlem sedan feb. 2003169 inlägg
#2

Är $lista redan en array? Det ser inte så ut, och i så fall så måste vi "spräcka" den. Försök med den här koden:

<?php

$lista = "{1,2,4,5,19,24}";

$tmp = ereg_replace("{","",$lista);
$tmp = ereg_replace("}","",$tmp);

$array = explode(",",$tmp);

$key = 20;
if(in_array(($key-1),$array))
{
   echo ($key-1);
}
else
{
   echo "Finns Inte";
}

?>

Jag kan ha missförstått dig helt, och i så fall ursäktar jag mig för det!

Medlem sedan juli 200268 inlägg
#3

Oj :)

Var visst lite otydlig, skulle med ett par [] på $lista också, ja, det är en array redan :)

Och grejen är att om numret inte finns i listan, så ska den ta det som är närmast "neråt" avrundat, man ska alltså inte kunna få meddelandet "finns inte"

utan istället få siffran före. :)

Medlem sedan feb. 2003169 inlägg
#4

men hur ser arrayen ut då? så här?

$lista[] = "{1,2,3,4,19,20}";
Medlem sedan aug. 20002 975 inlägg
#5

Något på det här hållet du söker:

$lista = array(1,2,4,5,19,24);

$key = 18;

foreach ($lista as $val) {
  if ($key >= $val) {
    $output = $val;
  }
} 

if (!isset($output)) {
   $output = $lista[0];
}

echo $output;
134 ms totalt · 3 externa anrop · v20260731065814-full.25f56b17
0 ms — hämta forumlista (cache)
0 ms — hämta statistik (cache)
132 ms — hämta tråd, inlägg och bilagor (db)