J'ai besoin de supprimer l'élément de tableau avec une valeur donnée:
if (in_array($id, $items)) {
$items = array_flip($items);
unset($items[ $id ]);
$items = array_flip($items);
}
Cela pourrait-il être fait de manière plus courte (plus efficace)?
Réponses:
Cela peut être accompli avec une simple doublure.
Avoir ce tableau:
Tu peux faire:
Et la valeur de
$arr
sera:J'espère que cela aidera à écrire un beau code.
la source
array_diff
fonction est non destructive, elle retourne un nouveau tableau.$referenced = array_diff($referenced, $items_to_remove);
J'ajoute une deuxième réponse. J'ai écrit un script d'analyse comparative rapide pour essayer différentes méthodes ici.
La troisième méthode,
array_keys()
avec le paramètre de recherche facultatif spécifié, semble être de loin la meilleure méthode. Exemple de sortie:À en juger par cela, la solution que j'utiliserais alors serait:
la source
Que diriez-vous:
ou pour plusieurs valeurs:
Cela éviterait également la perte de clés, ce qui est un effet secondaire de
array_flip()
.la source
supprimer
$rm_val
de$arr
la source
La solution la plus puissante serait d'utiliser
array_filter
, qui vous permet de définir votre propre fonction de filtrage.Mais certains pourraient dire que c'est un peu exagéré, dans votre situation ...
Une simple
foreach
boucle pour parcourir le tableau et supprimer l'élément que vous ne voulez pas devrait suffire.Quelque chose comme ça, dans votre cas, devrait probablement faire l'affaire:
la source
Essayez array_search ()
la source
array_keys()
semble mieux performer quearray_search()
pour cette tâche.Vos solutions ne fonctionnent que si vous avez des valeurs uniques dans votre tableau
Voir:
Un meilleur moyen serait de ne pas être défini avec array_search , dans une boucle si nécessaire.
la source
sans flip:
la source
la source
Vous pouvez utiliser la fonction array_splice pour cette opération Ref: array_splice
la source