Je veux parcourir un tableau avec foreach
pour vérifier si une valeur existe. Si la valeur existe, je souhaite supprimer l'élément qui la contient.
J'ai le code suivant:
foreach($display_related_tags as $tag_name) {
if($tag_name == $found_tag['name']) {
// Delete element
}
}
Je ne sais pas comment supprimer l'élément une fois la valeur trouvée. Comment le supprimer?
Je dois utiliser foreach
pour ce problème. Il existe probablement des alternatives foreach
et vous pouvez les partager.
$key => &$tag_name
stackoverflow.com/a/2008893/922522json_encode()
. Vous pouvez résoudre ce problème avec$display_related_tags = array_values ($display_related_tags);
après laforeach
boucle.$projects = array_filter($projects, function ($project) { return count($project->roles) > 0; });
il convertit le résultat en objet.Une meilleure solution consiste à utiliser la
array_filter
fonction:Comme le lit la documentation php :
la source
ARRAY_FILTER_USE_KEY - pass key as the only argument to callback instead of the value ARRAY_FILTER_USE_BOTH - pass both value and key as arguments to callback instead of the value
Default is 0 which will pass value as the only argument to callback instead.
Cela dit, relire la réponse dans ce cas, bien sûr, peu importe ce que vous prétendez.display_related_tags = array_values(display_related_tags);
après.la source
Au lieu de faire la boucle foreach () sur le tableau, il serait plus rapide d'utiliser array_search () pour trouver la clé appropriée. Sur les petits tableaux, j'irais avec foreach pour une meilleure lisibilité, mais pour des tableaux plus grands ou du code souvent exécuté, cela devrait être un peu plus optimal:
L'opérateur de comparaison strict! == est nécessaire, car array_search () peut renvoyer 0 comme index de $ unwantedValue.
De plus, l'exemple ci-dessus supprimera uniquement la première valeur $ unwantedValue, si $ unwantedValue peut apparaître plus d'une fois dans le $ array, vous devez utiliser array_keys (), pour les trouver toutes:
Consultez http://php.net/manual/en/function.array-search.php pour plus d'informations.
la source
si vous avez un scénario dans lequel vous devez supprimer plus d'une valeur du tableau foreach, dans ce cas, vous devez passer la valeur par référence pour chacune: j'essaie d'expliquer ce scénario:
dans la deuxième boucle, vous voulez désarmer les premières entrées de boucles ne reviennent pas dans l'itération à des fins de performance ou alors désarmées de la mémoire aussi parce qu'en mémoire elles se présentent et viendront dans des itérations.
la source
Il y a déjà des réponses qui donnent la lumière sur la façon de désarmer. Plutôt que de répéter le code dans toutes vos classes, faites fonctionner comme ci-dessous et utilisez-le dans le code chaque fois que nécessaire. Dans la logique métier, vous ne souhaitez pas toujours exposer certaines propriétés. Veuillez voir ci-dessous un appel de ligne pour supprimer
Appelez comme:
la source
Comme cela a déjà été mentionné, vous voudriez faire un foreach avec la clé et désarmer à l'aide de la clé - mais notez que la mutation d'un tableau pendant l'itération est en général une mauvaise idée, bien que je ne sois pas sûr des règles de PHP à ce sujet désinvolte.
la source
foreach
ou desfor
constructions au lieu de l'itération en général?