Avatar billede learner Praktikant
11. juni 2005 - 15:28 Der er 9 kommentarer og
2 løsninger

brug NULL eller Unset()

Hej, jeg er blevet glad for at benytte arrayes og derfor er mit kode lidt klistret in i array's :o) og det er fint nok. Men jeg bruger også ofte uset() fro at slette i et array. Nu har jeg så læst på php.net at der muligvis er tidsbesparelse ved at bruge $array[$bla] = NULL; og så er det jeg vil bede nogen forklare mig forskellen på de to løsninger. Så jeg kan vurdere om jeg kan benytte  = NULL; uden problemer.

Jeg læste det her:
http://dk.php.net/manual/da/function.unset.php

Glæder mig til et svar :o)
Avatar billede jakobdo Ekspert
11. juni 2005 - 17:31 #1
Du kunne jo lave en test.

<?php
$time_start = microtime(true);

$mitArray = array();
for($i = 0; $i < 1000; $i++)
{
  $mitArray[$i] = rand(0,10);
}

for($i = 0; $i < 1000; $i++)
{
  //$mitArray[$i] = NULL;
  //unset($mitArray[$i]);
}

$time_end = microtime(true);
$time = $time_end - $time_start;

echo "Page generated in $time\n";
?>
Avatar billede learner Praktikant
11. juni 2005 - 18:19 #2
Jeg ved det! Har jo netop læst om det på det link.
Men...
Er der forkel på de to måder at gøre det på?
Er der forskel på resultatet udover forskellen i behandlingstid?

Hvad feks hvis jeg:
$a['fdgd']="ghs";
$a['fdgd']=NULL;
if ($a['fdgd']){echo "den findes stadig";}else{echo "slettet helt";}

Jeg bruger som skrevet nu unset() mange steder og jeg vil vide om det gør en forkel hvis jeg benytter = NULL; i stedet for


hvad er forskellen på at = NULL; og unset()
Ikke i tid, men i effekt osv.
Avatar billede swaxi Nybegynder
13. juni 2005 - 13:44 #3
isset() returnerer false, hvis en variabel er NULL. Det er en kilde til megen forvirring og jeg fatter ikke hvorfor de har gjort det såddan i php, men det har de altså. Hvis du skal loope igennem array'et senere, vil du få problemer, fordi pladsen ikke forsvinder - den får bare NULL-værdien. Prøv en gang med ;
<?php
$a = Array();
$a['foo'] = 'foo';
echo "<pre>";
var_dump($a);
$a['foo'] = NULL;
var_dump($a);
unset($a['foo']);
var_dump($a);
?>
Avatar billede learner Praktikant
15. juni 2005 - 15:48 #4
Okay, så der er altså en forskel. For jeg bruger
foreach ($arr as $key => $value){}
og den vil jo tage allesammen med selvom de er = NULL
korrekt?

Tror i at det kan spare tid hvis man bruger =NULL således:
foreach ($arr as $key => $value){
  if (blabla){$key[$value]=NULL;}
}
foreach ($arr as $key => $value){
  if($value){gør noget}
}

istedet for:

foreach ($arr as $key => $value){
  if (blabla){unset($key[$value]);}
}
foreach ($arr as $key => $value){gør noget}

eller har i et andet bedre forslag til mig :o)
Avatar billede learner Praktikant
24. juni 2005 - 13:46 #5
Tror i at det kan spare tid hvis man gør således:
$arr = array(3,2,21,11);
foreach ($arr as $key => $value){
  if ($value==11){
    $key[$value]=NULL;
  }
}
foreach ($arr as $key => $value){
  if($value){
    echo $value.".";
  }
}


istedet for:
$arr = array(3,2,21,11);
foreach ($arr as $key => $value){
  if ($value==11){
    unset($key[$value]);
  }
}
foreach ($arr as $key => $value){
  echo $value.".";
}

Det giver vel det samme resultat(3.2.21.), gør det ik???

Sparer man tid ved den første metode? Altså hvis der er mange poster i arrayet.
eller har nogen et andet bedre forslag til mig :o)
Avatar billede learner Praktikant
25. august 2005 - 21:31 #6
lukker snart. Smid svar hvis nogen vil have point
Avatar billede learner Praktikant
25. august 2005 - 21:31 #7
svar
Avatar billede jakobdo Ekspert
25. august 2005 - 21:34 #8
Du kan få et svar her, og så give min point hvis du kunne bruge mit svar til noget.
Avatar billede learner Praktikant
25. august 2005 - 23:34 #9
prøv igen jakobdo ;o)
Det blev kun en kommentar
Avatar billede jakobdo Ekspert
26. august 2005 - 11:05 #10
Fuck den fejl laver jeg gang på gang! :o(
Avatar billede jakobdo Ekspert
26. august 2005 - 17:36 #11
Takker for point!
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