2010-04-12 7 views

Antwort

4

Grundsätzlich: Just do it.

Die manual hat gute Beispiele wie diese:

$input = array("red", "green", "blue", "yellow"); 
array_splice($input, 2); 
// $input is now array("red", "green") 

, wenn etwas bei Ihnen nicht funktionieren, bitte genauer zu Ihrer Frage hinzufügen.

+0

wie einfach "blau" löschen? – lovespring

+0

@lovespring du meinst wie man die Indexposition von "blau" findet, richtig? –

+0

Nein, ich meine, löschen Sie die "blau", löschen Sie einfach ein Element in der Mitte des Arrays. – lovespring

1

mit Start (id ist das Element, das Sie löschen möchten):

$input = array("a", "b", "c", "d", "e"); 
$id=2; 

Array Spleiß:

$a1 = array_slice($input, $id); 
print_r($a1); 

Array 
(
    [0] => c 
    [1] => d 
    [2] => e 
) 

Array-Slice:

array_splice($input, $id-1); 
print_r($input); 

Array 
(
    [0] => a 
) 

Zusammenführen der Spleiß und die Scheibe wird Ihnen ein Array geben, das mit dem Eingabearray identisch ist, aber ohne das spezifische Element.

Sie können dies wahrscheinlich mit nur einer Zeile tun, aber ich überlasse das als Übung für die Leser.

1

Muss es array_splice sein? Ich denke, die am besten geeignete Art und Weise (vielleicht auf der Array-Größe abhängig, ich weiß nicht, wie gut array_search Skalen) array_search() mit unset() zu verwenden ist:

$array = array('foo', 'bar' => 'baz', 'bla', 5 => 'blubb'); 

// want to delete 'baz' 
if(($key = array_search('baz', $array)) !== FALSE) { 
    unset($array[$key]); 
} 
+0

Ich kenne diesen Weg, zuerst unset, dann benutze array_values. Vielen Dank . – lovespring

3

, wie man nur „blau“ löschen?

Hier gehen Sie:

$input = array("red", "green", "blue", "yellow"); 
array_splice($input, array_search('blue', $input), 1); 
7

Eigentlich. Ich habe mir zwei Möglichkeiten ausgedacht. Es hängt davon ab, wie Sie mit dem Indexproblem umgehen.

Wenn Sie die Indizes beibehalten möchten, nachdem Sie bestimmte Elemente aus einem Array gelöscht haben, benötigen Sie unset().

<?php 
    $array = array("Tom","Jack","Rick","Alex"); //the original array 

    /*Here, I am gonna delete "Rick" only but remain the indices for the rest */ 
    unset($array[2]); 
    print_r($array); 
?> 

Die heraus gesetzt wäre:

Array ([0] => Tom [1] => Jack [3] => Alex) //The indices do not change! 

Wenn Sie jedoch die bisherigen Indizes ohne zu halten, verwenden array_splice() ein neues Array benötigen diese

<?php 
    $array = array("Tom","Jack","Rick","Alex"); //the original array 
    /*Here,we delete "Rick" but change indices at the same time*/ 
    array_splice($array,2,1); // use array_splice() 

    print_r($array); 
?> 

Der Ausgang Zeit wäre:

Array ([0] => Tom [1] => Jack [2] => Alex) 

Hoffe, das würde helfen!

+0

Dies sollte die akzeptierte sein – Kenedy

Verwandte Themen