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 = array('apple', 'orange', 'strawberry', 'blueberry', 'kiwi');
l'utilisateur entre strawberry
strawberry
est supprimé.
À 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.
- Même question: stackoverflow.com/questions/7225070/...
- Une autre question : stackoverflow.com/questions/1883421/...
- plus de la même question: stackoverflow.com/questions/369602/...
Vous devez vous connecter pour publier un commentaire.
Utilisation
array_search
pour obtenir la clé et l'enlever avecannuler
si trouvé:array_search
retourne faux (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:$submenuArray
? (Notez qu'à chaque boucle$submenuArray
sera remplacé.)Utilisation
array_diff()
pour 1 ligne solution:...Pas besoin de fonctions supplémentaires ou boucle foreach.
strawberry
n'est pas dans la table initiale, il sera disponible dans l'$array_without_strawberries
de la matrice de code dangereux si vous voulez vous assurer que l'élément n'est pas dans un tableau.$a = array_diff(array(), array('strawberry'));
- $a est un tableau vide.unset
approche le mieux?$my_array = array_values($my_array);
.in_array
etarray_search
). En utilisant le retour dearray_search
comme dans Gumbo réponse est plus efficaceSi vous êtes à l'aide d'un simple tableau ici (ce qui semble être le cas), vous devriez être en utilisant ce code à la place:
unset($array[$key])
supprime uniquement l'élément mais ne pas réorganiser le simple tableau.On peut supposer que nous avons un tableau et utiliser array_splice:
Par rapport à unset:
Avis comment
unset($array[$key])
ne pas réorganiser le tableau.unset
ne retourne rien. Doncjson_encode(unset($array[2]))
n'est pas approprié pour une comparaison.$arr = \array_filter($arr, function ($v) { return $v != 'some_value'; }
array_filter()
. Alors que personnellement, je voudrais utiliser une fonction anonyme dans mon application, je crois que l'action correcte sur ce serait de commenter ou de modifier des D. Martin réponse si vous souhaitez faire un micro-amélioration de sorte que cette page n'est pas devenu pléthorique. S'il vous plaît supprimer cette double réponse.C'est une simple répétition, qui peuvent supprimer plusieurs valeurs dans le tableau.
array_diff()
. Comment est-ce obtenir trois upvotes. Personne ne devrait être de trouver cette réponse utile ou de l'utiliser dans leurs propres projets. Je recommande la suppression de cette réponse: cela permettrait de libérer votre compte de la faible qualité de la réponse, de réduire la réponse-ballonnement sur cette page, et vous faire gagner un Disciplinée badge. Je vais reporter mon downvote de sorte que vous avez le temps de les supprimer pour une récompense.Je suis actuellement à l'aide de cette fonction:
Vous pouvez entrer un tableau ou seulement une chaîne de caractères avec le ou les élément(s) qui doit être supprimé.
L'écrire comme ceci:
OU
$detils = array_delete('orange', $detils);
Il va également de revisiter elle.
Sera comme ceci:
Une meilleure approche serait peut-être de garder vos valeurs clés dans un tableau associatif, et ensuite appeler
array_keys()
sur on lorsque vous souhaitez tableau réel. De cette façon, vous n'avez pas besoin d'utiliserarray_search
pour trouver votre élément.La réponse à PHP suppression de tableau par valeur (pas de clé)
Donnée par
https://stackoverflow.com/users/924109/rok-kralj
De l'OMI est la meilleure réponse qu'il supprime et ne pas muter
Elle généralise très bien, vous pouvez supprimer autant d'éléments que vous le souhaitez en même temps, si vous le souhaitez.
Avertissement: veuillez Noter que ma solution produit une nouvelle copie du tableau tout en conservant l'ancienne intacte contrairement à la accepté de répondre à qui subit une mutation. Il pourrait être un peu plus lent à cause de cela.
Cette question a plusieurs réponses, mais je tiens à ajouter quelque chose de plus parce que quand j'ai utilisé
unset
ouarray_diff
j'ai eu plusieurs problèmes à jouer avec les index de la nouvelle pile lorsque l'élément a été supprimé (car les index sont enregistrés)Je serai de retour à l'exemple :
ou
Si vous imprimez le résultat que vous allez obtenir :
Résultat :
Mais les indices seront sauvegardés et vous aurez accès à votre élément comme :
Et donc le tableau final ne sont pas ré-indexé. Si vous avez besoin d'ajouter, après le
unset
ouarray_diff
:Après que votre groupe aura un indice normal :
Liées à ce poste : Re-Indice De Tableau
Espère que ça aidera
Je préfère utiliser array_key_exists à la recherche pour les clés dans des tableaux comme:
Array([0]=>'A',[1]=>'B',['key'=>'value'])
pour trouver la spécifié de manière efficace, puisque array_search et in_array() ne fonctionnent pas ici. Et ne enlever des trucs avec unset().
Je pense que ça va aider quelqu'un.
Créer tableau numérique avec suppression particulier du Tableau de la valeur
Vous Pouvez Consulter ce lien..
Je cherchais la réponse à la même question et suis tombé sur ce sujet. Je vois deux façons principales: la combinaison de
array_search
&unset
et l'utilisation dearray_diff
. Au premier coup d'œil, il me semblait que la première méthode est plus rapide, car ne nécessite pas la création d'un nouvel array (comme lors de l'utilisation dearray_diff
). Mais j'ai écrit un petit test et fait en sorte que la deuxième méthode est non seulement plus concis, mais aussi plus rapide! Heureux de partager cela avec vous. 🙂https://glot.io/snippets/f6ow6biaol
À l'aide de
array_seach()
, essayez les solutions suivantes:array_search()
retourne la clé de l'élément qu'il trouve, qui peut être utilisé pour supprimer l'élément du tableau d'origine à l'aide deunset()
. Il sera de retourFALSE
en cas d'échec, elle peut, cependant, de retour d'un "falsey" valeur sur le succès (votre clé peut être0
par exemple), c'est pourquoi la comparaison stricte!==
opérateur est utilisé.La
if()
déclaration de vérifier siarray_search()
a retourné une valeur, et seulement effectuer une action si elle n'.array_search()
-unset()
méthode a déjà été posté par Jean-Conde ans avant le vôtre. Des réponses en double n'ont aucune valeur pour les lecteurs et sont en fait un inconvénient parce que de temps perdu pendant le défilement et la lecture des informations redondantes. S'il vous plaît supprimer cette réponse.$delete = "fraise";
$index = array_search($supprimer, $array);
array_splice($array, $index, 1);