Avatar billede cmp77 Nybegynder
26. juli 2007 - 21:35 Der er 8 kommentarer og
1 løsning

array_search problem

Hej,

De grå hår har nu indfundet sig og tiden er inde til at søge hjælp...

Fra en formular på foregående side får jeg et array ($p_value) med tal (der i dette eksempel er nøjagtig magen til array'et $points).
For at sikre mig at ingen tal optræder to gange, fjerner jeg elementerne fra $points første gang de optræder i $p_value...

$points = array(100, 75, 60, 50, 40, 36, 30, 26, 22, 18, 14, 12, 10, 8, 6, 5);

for ($i=0; $i<16; $i++) {
  $found_in_array = array_search($p_value[$i], $points);
  if ($found_in_array) {
    echo "FOUND at key $found_in_array<BR>";
    unset ($points["$found_in_array"]);
  } else {
    echo "NOT FOUND<BR>";
  }
}

Mit problem er nu, at jeg får følgende resultat...

NOT FOUND
FOUND at key 1
FOUND at key 2
FOUND at key 3
FOUND at key 4
FOUND at key 5
FOUND at key 6
FOUND at key 7
FOUND at key 8
FOUND at key 9
FOUND at key 10
FOUND at key 11
FOUND at key 12
FOUND at key 13
FOUND at key 14
FOUND at key 15

Fjerner jeg derimod min "if/else sætning" og laver nedenstående...

$points = array(100, 75, 60, 50, 40, 36, 30, 26, 22, 18, 14, 12, 10, 8, 6, 5);

for ($i=0; $i<16; $i++) {
  $found_in_array = array_search($p_value[$i], $points);
  unset ($points["$found_in_array"]);
}

...så fjernes alt rigtigt nok - Også key 0!?!?

Hvad gør jeg galt??
Avatar billede olebole Juniormester
26. juli 2007 - 21:40 #1
<ole>

I PHP er 1 = true og 0 = false. Derfor vil betingelsen:
    if ($found_in_array) {

- ikke være opfyldt, hvis $found_in_array er 0 ... og det er jo forkert, hvis det skal fjernes  ;o)

/mvh
</bole>
Avatar billede erikjacobsen Ekspert
26. juli 2007 - 21:40 #2
Når $found_in_array=0 er

  if ($found_in_array) {

falsk. Spørg i stedet på

  if ($found_in_array!==FALSE) {
Avatar billede erikjacobsen Ekspert
26. juli 2007 - 21:41 #3
Det står jo i advarslen på http://php.net/array_search
Avatar billede erikjacobsen Ekspert
26. juli 2007 - 21:43 #4
Og ja, Ole, jeg er simpelthen for mange millisekunder for langsom, når jeg skal konkurrere med så friske unge mennesker som dig. Eller er du dopet ... ??
Avatar billede cmp77 Nybegynder
26. juli 2007 - 22:22 #5
Arhh ja, det står der da også.. Af og til kan man ikke se skoven for træer :)

Takker mange gange til jer begge, men da ingen af jer har postet et svar, får du hermed en chance til Erik... Første mand med et svar scorer :)
Avatar billede erikjacobsen Ekspert
26. juli 2007 - 22:24 #6
Jeg samler slet ikke på point, tak.
Avatar billede cmp77 Nybegynder
26. juli 2007 - 22:28 #7
haha... jammen så er den sag jo afgjort - Takker alligevel :)
Avatar billede olebole Juniormester
27. juli 2007 - 12:42 #8
Hehe ... lidt dopet er man vel altid. Det tager jo lidt tid at få en gammel dose ud af kroppen, siger de kloge, så deeeeeeeet ........  *-\
Avatar billede olebole Juniormester
27. juli 2007 - 23:35 #9
Tak for points  ;o)
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