193 votes

PHP: Comment faire pour supprimer un élément d'un tableau?

Comment faire pour supprimer un élément d'un tableau quand je sais que le nom d'éléments? par exemple:

J'ai un tableau:

$array = (apple, orange, strawberry, blueberry, kiwi);

l'utilisateur saisit strawberry

strawberry est supprimé.

Pour expliquer:

J'ai une base de données qui stocke une liste d'éléments séparés par une virgule. Le code de la tire sur la liste en fonction d'un choix de l'utilisateur lorsque ce choix est situé. Donc, si ils choisissent de fraise ils code tire dans chaque entrée de la fraise est localisé puis la convertit en un tableau à l'aide de la fonction split(). Je veux leur enlever l'utilisateur de choisir les éléments, pour cet exemple, la fraise, à partir du tableau.

356voto

Gumbo Points 279147

Utiliser array_search pour obtenir la clé et l'enlever avec unset si trouvé:

if (($key = array_search('strawberry', $array)) !== false) {
    unset($array[$key]);
}

array_search retourne false (null jusqu'en PHP 4.2.0) si aucun élément n'a été trouvé.

Et si il peut y avoir plusieurs éléments avec la même valeur, vous pouvez utiliser array_keys à la remise des clés à tous les éléments:

foreach (array_keys($array, 'strawberry') as $key) {
    unset($array[$key]);
}

186voto

ills Points 111

Utiliser array_diff() pour 1 ligne de solution:

$array = array('apple', 'orange', 'strawberry', 'blueberry', 'kiwi', 'strawberry'); //throw in another 'strawberry' to demonstrate that it removes multiple instances of the string
$array_without_strawberries = array_diff($array, array('strawberry'));
print_r($array_without_strawberries);

...Pas besoin de fonctions supplémentaires ou boucle foreach.

44voto

John Conde Points 102874
if (in_array('strawberry', $array)) 
{
    unset($array[array_search('strawberry',$array)]);
}

27voto

ericluwj Points 41

Si vous êtes à l'aide d'un simple tableau ici (ce qui semble être le cas), vous devriez être en utilisant ce code à la place:

if (($key = array_search('strawberry', $array)) !== false) {
    array_splice($array, $key, 1);
}

unset($array[$key]) seulement supprime l'élément mais ne pas réorganiser le simple tableau.

On peut supposer que nous avons $array = array('apple', 'orange', 'strawberry', 'blueberry', 'kiwi'),

json_encode(array_splice($array, 2, 1)) rendements en ['apple', 'orange', 'blueberry', 'kiwi']

json_encode(unset($array[2])) rendements en {"0": "apple", "1": "orange", "3": "blueberry", "4": "kiwi"}

Remarquez comment unset($array[$key]) ne pas réorganiser le tableau.

15voto

srcspider Points 2623

$arr = \array_filter($arr, function ($v) { return $v != 'some_value'; }

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X