Avatar billede rasmus-madsen Nybegynder
13. februar 2006 - 14:37 Der er 26 kommentarer og
1 løsning

Fjern i Array.

Hej allesammen.

Har et lille problem.

Har en $Var som er et array hvor indholdet kan være:

1,2,null,4,null,null,null

Jeg vil derfor gerne slette alle ,"null".
Kender i en smart funktion til det ?

På forhånd tak...
Avatar billede coderdk Praktikant
13. februar 2006 - 14:44 #1
Så vidt jeg husker:

$Var = array_unique( $Var );
Avatar billede rasmus-madsen Nybegynder
13. februar 2006 - 14:45 #2
Det sletter vel ikke alle hvor værdien er "null" ?
Avatar billede coderdk Praktikant
13. februar 2006 - 14:46 #3
Det skal lige siges, at hvis du f.eks. har flere entries med samme værdi, så har du nu kun én af hver ;)

Ellers kan du måske lave noget a la:

function &array_remove_nulls( &$array )
{
  $tmp = array();
  foreach ( $array as $item )
  {
    if ( !is_null( $item ) ) $tmp[] = $item;
  }
  return $tmp;
}
Avatar billede rasmus-madsen Nybegynder
13. februar 2006 - 14:49 #4
hvordan vil du så kalde den ?
array_remove_nulls($var)
ikke ?
Avatar billede showsource Seniormester
13. februar 2006 - 14:51 #5
Avatar billede rasmus-madsen Nybegynder
13. februar 2006 - 14:51 #6
hmm hvordan vil du så gøre deT?
Avatar billede rasmus-madsen Nybegynder
13. februar 2006 - 14:52 #7
function fjern($var)
{
  return($var == null);
}
Avatar billede coderdk Praktikant
13. februar 2006 - 14:54 #8
Bare med

    $Var = array_remove_nulls( $Var );

showsource's og din sidste ville sikkert også virke :)
Avatar billede horsmark Nybegynder
13. februar 2006 - 16:41 #9
coderdk >>

Mht dit eksempel bør det vel være som nedenstående for at sikre at evt objectref bibeholdes...

function &array_remove_nulls( &$array )
{
  $tmp = array();
  for ( $i=0; $i < count($array); $i++ )
  {
    if ( !is_null( $array[$i] ) ) $tmp[] =& $array[$i];
  }
  return $tmp;
}
Avatar billede horsmark Nybegynder
13. februar 2006 - 16:43 #10
...ellers giver det ingen mening at lade det være en "reference funktionen"
Avatar billede rasmus-madsen Nybegynder
13. februar 2006 - 16:46 #11
For denne fejl :
Fatal error: Cannot create references to/from string offsets nor overloaded objects in /home/www/web82/html/mysex/split.php on line 19

Kan det havde noge at gøre med jeg definere mig array forkert ?

Sådan gør jeg i en while :
$Var .= $_POST["Var" .$i] .",";
Avatar billede horsmark Nybegynder
13. februar 2006 - 16:50 #12
Hvis du vill loope igennem dit postarray og nappe det der er sat og starter med Var skal du gøre sådan her:

foreach( $_POST as key => $value ){
...
}
Avatar billede horsmark Nybegynder
13. februar 2006 - 16:53 #13
måske er det i virkeligheden dette du søger:
$Var = array();
foreach( $_POST as $key => $value ){
  if( strpos($key, "Var") !== false && !empty($value) ){
    $Var[] = $value;
  }
}
Avatar billede rasmus-madsen Nybegynder
13. februar 2006 - 23:18 #14
Kan ikke få det til at virke.

HAr $Var som indeholder = 1,2,null,4,6,null

Null = en værdi som jeg har smidt ind..

De skal nu væk !..

Der er flere af dem..
Hvad gør jeg ?
Avatar billede horsmark Nybegynder
14. februar 2006 - 07:52 #15
Så brug
function fjern( $array )
{
  $tmp = array();
  foreach ( $array as $item ) {
    if ( !is_null( $item ) ) $tmp[] = $item;
  }
  return $tmp;
}

$Var = fjern( $Var );
Avatar billede rasmus-madsen Nybegynder
14. februar 2006 - 08:48 #16
Tror du misfostår mig..
Det kunne ligeså godt være 1 der skulle fjernes.
Avatar billede ttopholm Nybegynder
14. februar 2006 - 08:53 #17
Øhhh.. Umiddelbart har du jo ikke et array, men en komma-separeret streng...

Derfor er der ingen af tingene der virker, da du ikke har et array.
Avatar billede ttopholm Nybegynder
14. februar 2006 - 08:55 #18
Det her genere jo bare en komma-separeret streng:
$Var .= $_POST["Var" .$i] .",";

vil anbefale du bruger horsmarks kode fra 13/02-2006 16:53:13.. den sætter det ind i et array uden NULL
Avatar billede ttopholm Nybegynder
14. februar 2006 - 08:55 #19
vel og mærke uden du laver denne her først:
$Var .= $_POST["Var" .$i] .",";
Avatar billede rasmus-madsen Nybegynder
15. februar 2006 - 17:23 #20
Det ville ikke være smart i den sammenhæng jeg skal bruge det.

Der må da findes en måde til at fjerne ting i sådanne strenge:
3,5,3,2,6,4,5,3,3

Lad os bare sige det er 5 som skal fjernes.
Hvad med Reg ?
Avatar billede ttopholm Nybegynder
15. februar 2006 - 17:29 #21
hvis du vil fjerne alle 5-taller fra den.. gør du bare således her:

$var = str_replace(5,"", $var);
Avatar billede ttopholm Nybegynder
15. februar 2006 - 17:29 #22
aghrr... sorry

$var = str_replace(",5","", $var);
Avatar billede ttopholm Nybegynder
15. februar 2006 - 17:30 #23
den virker så bare ikke hvis fem er først....
men det kan jo bare laves..
Avatar billede horsmark Nybegynder
15. februar 2006 - 17:33 #24
$Var = "3,5,3,,6,4,5,3,3";
var_dump($Var);
$Var = explode(",", $Var);
$tmpVar = array();
for($i=0;$i<count($Var);$i++){
if( !empty($Var[$i]) )  $tmpVar[] = $Var[$i];
}
$Var = $tmpVar;
$Var = implode(",",$Var);

var_dump($Var);
Avatar billede rasmus-madsen Nybegynder
15. februar 2006 - 23:27 #25
Takker..

Svar og pointsne er dine :D
Avatar billede horsmark Nybegynder
16. februar 2006 - 10:45 #26
allrighty here goes... fint det spiller
Avatar billede horsmark Nybegynder
16. februar 2006 - 10:45 #27
_her_ er et svar
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