Avatar billede razmuz_dk Nybegynder
25. november 2004 - 16:14 Der er 6 kommentarer og
1 løsning

Arrays og unset()

Hejsa, jeg har følgende script:

<?
$test[] = "Hej";
$test[] = "Hej2";

unset($test[0]);
unset($test[1]);

// Her skal køres en eller anden funktion

$test[] = "hej igen";

print $test[0]; // burde printe "hej igen"
?>

Eftersom $test[0] og $test[1] er blevet unset'ed, vil jeg gerne have at $test[] bliver lig med $test[0] (i linje i 10) - håber min hensigt fremgår af scriptet.

Der må da findes en funktion der løser mit problem?

mvh.
Rasmus
Avatar billede hmortensen Nybegynder
25. november 2004 - 16:24 #1
sort($test);
reset($test);

echo $test[0];
Avatar billede coderdk Praktikant
25. november 2004 - 17:31 #2
Nej, $test[] = "hej igen"; tilføjer til slutningen af array'et...
Du kan bruge $test = array(); inden du tilføjer igen...
Avatar billede razmuz_dk Nybegynder
25. november 2004 - 17:31 #3
Ikke helt tilfredsstillende... det ville jo påvirke rækkefølgen i array'et ud fra dets values.. det må det ikke...

??
Avatar billede razmuz_dk Nybegynder
25. november 2004 - 17:33 #4
ovenstående besked var til hmortensen

Codersdk-> Jamen så slettes arrayet jo helt, det må det heller ikke ... laver lige et nyt eksempel :) .. 2sek
Avatar billede razmuz_dk Nybegynder
25. november 2004 - 17:36 #5
<?
$test[] = "Hej";
$test[] = "Hej2";

unset($test[1]);

$test[] = "def";
$test[] = "abc";

// nu burde
// $test[0]="Hej";
// $test[1]="def";
// $test[2]="abc";
?>

Som i kan se går det ikke jeg bruger sort, fordi så bliver "abc" og "def" byttet rundt og det må de ikke, og jeg kan heller ikke bruge $test = array(); fordi så slettes "Hej" som ligger i $test[0]..

Help :)
Avatar billede coderdk Praktikant
25. november 2004 - 17:45 #6
function array_remove_element( $array, $index )
    {
        if ( $index == 0 )
        {
            $result = array_slice( $array, 1 );
        }
        else if ( $index == count( $array ) - 1 )
        {
            $result = array_slice( $array, 0, -1 );
        }
        else
        {
            $result = array_merge( array_slice( $array, 0, $index ), array_slice( $array, $index + 1 ) );
        }
        return $result;
    }

$test[] = "Hej";
$test[] = "Hej2";

$test = array_remove_element( $test, 1 );

$test[] = "def";
$test[] = "abc";

echo "<pre>";
var_dump( $test );
Avatar billede coderdk Praktikant
25. november 2004 - 17:47 #7
Eller lettere:

$test[] = "Hej";
$test[] = "Hej2";

unset( $test[1] );
$test = array_unique( $test );

$test[] = "def";
$test[] = "abc";

echo "<pre>";
var_dump( $test );
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