Avatar billede Slettet bruger
11. august 2006 - 22:22 Der er 10 kommentarer og
1 løsning

Slet tomt plads i array

Hej

Jeg har et array som indeholder 10 tal, dog indeholder det også nogen tomme felter. Disse ønsker jeg slette, så array bliver fra 0 til 9. Problemet er, at jeg ikke ved hvor disse tomme felter er.


Nogen som kan hjælpe mig ?
Avatar billede pidgeot Nybegynder
11. august 2006 - 22:27 #1
Ganske enkelt:

$nytarray=array_values($gammeltarray);
Avatar billede Slettet bruger
11. august 2006 - 22:36 #2
Det lyder let :-)


Jeg var ellers lige kommet op med dette (og er lidt stolt)

function rebuild_array($array)
{
  $tmpArr = array();
 
  foreach ($array as $element)
  $tmpArr[] = $element;
 
  return $tmpArr;
}


Prøver lige dit forslag
Avatar billede Slettet bruger
11. august 2006 - 22:38 #3
Det virker jo kanon.

Var ellers så stolt over min funktion :-/
Avatar billede Slettet bruger
11. august 2006 - 22:39 #4
Men tak for hjælpen og hurtigt svar
Avatar billede pidgeot Nybegynder
11. august 2006 - 22:39 #5
Din funktion gør reelt det samme, men array_values er indbygget i PHP, og burde derfor være mere effektiv (fordi PHP ikke skal til at fortolke kode, men bruger noget der er kompileret på forhånd).
Avatar billede pidgeot Nybegynder
11. august 2006 - 22:40 #6
Det er nok ikke det store hvis vi snakker så få elementer, men man siger jo der ikke er nogen grund til at genopfinde hjulet :)
Avatar billede jakobdo Ekspert
11. august 2006 - 22:41 #7
Hvis nu du har keys, og vil beholde dem, så kan du bruge:

function rebuild_array($array)
{
    $tmpArr = array();

    foreach ($array as $key => $value)
    {
        if(!empty($value))
        {
          $tmpArr[$key] = $value;
      }
    }
    return $tmpArr;
}
Avatar billede pidgeot Nybegynder
11. august 2006 - 22:45 #8
...hvad ville pointen være i det? Hvis du har brug for keysene, har du vel ikke brug for at genopbygge arrayet - du kan bare kopiere arrayet med $nytarr=$gammeltarr.
Avatar billede jakobdo Ekspert
11. august 2006 - 22:58 #9
Jo, men hvis man vil have slettet tomme pladser?
Avatar billede pidgeot Nybegynder
11. august 2006 - 23:11 #10
De er allerede slettet når man unsetter key'en (unset($arr['key']);). Pointen ved at skulle bruge det her ved talindekses er at når man unsetter $tal[0], så bliver arrayet ikke omindekseret - og så kan man ikke bruge for().

Hvis du bruger andet til keys end PHP's autoindeksering, vil du alligevel skulle bruge foreach, og derfor er der intet at hente ved at gøre det der - desuden vil det resulterende array være identisk med det du har sendt ind, fordi der ikke FINDES nogle tomme pladser når det er blevet unset.
Avatar billede jakobdo Ekspert
11. august 2006 - 23:20 #11
Fair nok.
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