Lösches eines array Items !!



  • Hi,

    ich habe folgendes Problem:

    Ich muss ein Item aus einem 2D Array löschen. Jedoch nimmt das sehr viel zeit in anspruch.

    Das array sieht ungefähr so bei mir aus

    $Members[1..11][1...1024]

    Items werden immer vom 2. Index gelöscht. zb. (1,2,5) sollen gelöscht werden.

    DEL $Members[1..11][1]
    DEL $Members[1..11][2]
    DEL $Members[1..11][5]

    Jedoch ist die FUnktion die ich geschrieben habe schnecken langsam.

    Evt. habt ihr eine Idee ? 🙄

    function DeleteItemOfArray( &$array, $item )
    {
    
    	$part_1 = array_slice( $array, 0, $item );
    	$part_2 = array_slice( $array, $item+1, sizeof($array)-($item+1) );
    
    	$array =  array_merge( $part_1, $part_2 );
    }
    

    Ciao


  • Mod

    probiers mal mit unset()



  • Das Array muss ja an dieser Stelle zurück geschiftet weredn !!

    Deswegen ist es nicht so einfach !! 🙄



  • gG schrieb:

    Das Array muss ja an dieser Stelle zurück geschiftet weredn !!

    Deswegen ist es nicht so einfach !! 🙄

    unset taugt ganz gut dafür:

    <?php
    
    $a = array(1, 3, 45, 44, 22, 33);
    
    print_r($a) . "\n";
    
    unset($a[2]);
    
    print_r($a) . "\n";
    
    ?>
    

    Output:

    Array
    (
        [0] => 1
        [1] => 3
        [2] => 45
        [3] => 44
        [4] => 22
        [5] => 33
    )
    Array
    (
        [0] => 1
        [1] => 3
        [3] => 44
        [4] => 22
        [5] => 33
    )
    


  • supertux schrieb:

    Output:

    Array
    (
        [0] => 1
        [1] => 3
        [2] => 45
        [3] => 44
        [4] => 22
        [5] => 33
    )
    Array
    (
        [0] => 1
        [1] => 3[b]
        [3] => 44
        [4] => 22[/b]
        [5] => 33
    )
    

    Die 2. wurde übersprungen. Und das ist auch das Problem !

    Ciao



  • und wo ist das Problem? Benutze foreach.


  • Mod

    wenn du die indeces lueckenlos haben willst, wirst du kopieren muessen. geht nicht anders.

    uU ist aber array_values() schneller als das slicen+mergen


Anmelden zum Antworten