Pourriez-vous me dire comment supprimer un élément d'un tableau? Pensez-vous que c'est bon?Quelle est la meilleure façon de supprimer un élément de tableau en PHP?
Répondre
Cela dépend:
$a1 = array('a' => 1, 'b' => 2, 'c' => 3);
unset($a1['b']);
// array('a' => 1, 'c' => 3)
$a2 = array(1, 2, 3);
unset($a2[1]);
// array(0 => 1, 2 => 3)
// note the missing index 1
// solution 1 for numeric arrays
$a3 = array(1, 2, 3);
array_splice($a3, 1, 1);
// array(0 => 1, 1 => 3)
// index is now continous
// solution 2 for numeric arrays
$a4 = array(1, 2, 3);
unset($a4[1]);
$a4 = array_values($a4);
// array(0 => 1, 1 => 3)
// index is now continous
En général unset()
est sans danger pour les tables de hachage (tableaux chaîne indexée-), mais si vous devez compter sur les index numériques continous vous devrez utiliser soit array_splice()
ou une combinaison de unset()
et array_values()
.
La voie commune:
Selon le manual
unset($arr[5]); // This removes the element from the array
La façon filtrée:
Il y a aussi la fonction array_filter() pour prendre soin de réseaux de filtrage
$numeric_data = array_filter($data, "is_numeric");
Pour obtenir un index séquentiel vous pouvez utiliser
$numeric_data = array_values($numeric_data);
Références
PHP – Delete selected items from an array
Peter, merci. – lovespring
Cela dépend. Si vous voulez supprimer un élément sans provoquer de lacunes dans les index, vous devez utiliser array_splice:
$a = array('a','b','c', 'd');
array_splice($a, 2, 1);
var_dump($a);
Sortie:
array(3) {
[0]=>
string(1) "a"
[1]=>
string(1) "b"
[2]=>
string(1) "d"
}
L'utilisation unset peut fonctionner, mais cela se traduit par un indice non continu. Cela peut parfois être un problème lorsque vous itérer sur le tableau en utilisant count ($ a) - 1 comme une mesure de la limite supérieure:
$a = array('a','b','c', 'd');
unset($a[2]);
var_dump($a);
Sortie:
array(3) {
[0]=>
string(1) "a"
[1]=>
string(1) "b"
[3]=>
string(1) "d"
}
Comme vous le voyez, le nombre est maintenant 3 mais l'indice du dernier élément est également 3.
Ma recommandation est donc d'utiliser array_splice pour les tableaux avec des index numériques, et d'utiliser unsetet seulement pour les tableaux (dictionnaires vraiment) avec des index non numériques.
alternativement, vous pouvez appeler 'unset ($ a [2]); $ a = array_values ($ a); ' – nickf
- 1. MVC2 Quelle est la meilleure façon de page, un tableau
- 2. Quelle est la meilleure façon d'effacer un tableau de chaînes?
- 3. Quelle est la meilleure façon d'implémenter un contrôleur en PHP?
- 4. Quelle est la meilleure façon d'obtenir un HashTable en PHP?
- 5. Meilleure façon de libérer un tableau de tableau en javascript
- 6. Quelle est la meilleure façon de charger la balance? PHP
- 7. En java, quelle est la meilleure façon de trier un tableau d'entiers si seul le dernier élément est déplacé?
- 8. Quelle est la meilleure façon de mettre à jour n éléments par rapport à un élément?
- 9. WPF - Meilleure façon de supprimer un élément de ItemsSource
- 10. Quelle est la meilleure façon de détecter si un objet Javascript donné est un élément DOM?
- 11. Quelle est la meilleure façon d'initialiser un tableau sur un tableau de longueur fixe? (C++/CLI)
- 12. Quelle est la meilleure façon de vider un répertoire?
- 13. Meilleure façon de supprimer un élément in situ
- 14. Quelle est la meilleure façon de vérifier qu'un élément est prêt à être utilisé dans une boucle foreach() en php?
- 15. Quelle est la meilleure façon de créer un jeton de sécurité à usage unique en PHP?
- 16. Quelle est la meilleure façon de convertir une chaîne hexadécimale en un tableau d'octets (.NET)?
- 17. Quelle est la meilleure façon de combiner plusieurs tableaux en un seul tableau?
- 18. Quelle est la meilleure façon d'actualiser un tableau de cumul en charge?
- 19. Quelle est la meilleure façon d'envoyer un tableau PHP via jquery?
- 20. Quelle est la meilleure façon de stocker des variables de classe en PHP?
- 21. Quelle est la meilleure façon d'enregistrer un RichTextFile en C#?
- 22. Quelle est la meilleure façon d'utiliser l'API Twitter via PHP?
- 23. quelle est la meilleure façon de marquer un texte?
- 24. Quelle est la meilleure façon de déboguer un Oracle SP?
- 25. Quelle est la meilleure façon de dessiner du texte sur un élément de canevas HTML?
- 26. Quelle est la meilleure méthode pour obtenir la clé du dernier élément de tableau ajouté en PHP?
- 27. quelle est la meilleure façon de créer un menu javascript?
- 28. Quelle est la meilleure façon de déboguer un écrasement explorer.exe?
- 29. Meilleure façon de créer un tableau singleton
- 30. Quelle est la meilleure façon de localiser un IEnumerable?
Pourquoi utiliseriez-vous unset combiné avec array_values plutôt que array_splice? – John
@John: Un scénario auquel je peux penser est, lorsque vous voulez supprimer plusieurs éléments d'un tableau. Avec la méthode 'unset()' vous pouvez supprimer les valeurs sans avoir à penser à changer de clé - si vous avez terminé, exécutez le tableau à l'aide de 'array_values ()' pour normaliser l'indexation. C'est plus propre et plus rapide que d'utiliser 'array_splice()' plusieurs fois. –