De recherche et de remplacement à l'intérieur d'un tableau associatif
J'ai besoin de rechercher et de remplacer à l'intérieur d'un tableau associatif.
ex:
$user = "user1"; //I've updated this
$myarray = array("user1" => "search1", "user2" => "search2", "user3" => "search1" ) ;
Je veux remplacer search1
pour search4
. Comment puis-je y parvenir?
Mise à JOUR: j'ai oublié de mentionner que la matrice a plusieurs search1
valeurs et je veux juste changer la valeur où la key is == $user
. Désolé de ne pas mentionner plus tôt.
OriginalL'auteur Pedro Lobito | 2011-08-22
Vous devez vous connecter pour publier un commentaire.
Si une réponse a résolu votre problème, vous devez l'accepter en cliquant sur la coche à gauche, de sorte que d'autres à ce poste est à savoir que c'est la bonne solution.
Pro: c'est le code de base de chaque développeur PHP est familier. Con: c'est plus lent que la fonction signifiait pour cette opération,
array_map()
. Con: la table initiale est édité en place, qui peut parfois être utile mais qui est généralement une mauvaise pratique, surtout depuis qu'il rend difficile de définir l'unité de test sur ce code.OriginalL'auteur Joseph Silber
Il y a une fonction pour ça : array_map().
Si vous ne souhaitez pas utiliser une fonction lambda, de définir une fonction normale ou de la méthode et de rappel.
OriginalL'auteur
Pourquoi ne pas
OriginalL'auteur xdazz
Imprime:
break;
à l'intérieur de laif
pour arrêter l'itération après que la clé a été trouvée. Pas de point d'itération sur l'ensemble de la pile si la valeur a déjà été définie.adlawson : Merci pour cette.
OriginalL'auteur Pedro Lobito
Résout le risque mentionné dans le commentaire en réponse à cette solution
OriginalL'auteur Luke Stevenson
Mis à jour
Depuis le post a été mis à jour, et j'ai eu de la chance de dormir un peu, j'ai réalisé que ma réponse était stupide. Si vous avez une clé et vous avez besoin de changer une valeur, pourquoi effectuer une itération sur l'ensemble de la baie?
Similaire à @Joseph méthode (à peu près la même), mais avec un peu de bricolage:
Le passage par référence est une jolie manière de modifier l'intérieur de
foreach
, et est sans doute plus rapide.OriginalL'auteur adlawson
De recherche et de remplacement à l'intérieur d'un tableau associatif ou numérique
Remplacer une valeur dans un tableau associatif et tableau peut être profonde tout
OriginalL'auteur realmag777
si vous voulez clé particulière, alors vous venez d'ajouter une condition pour la clé dans le précédent sna comme.
OriginalL'auteur Divyesh Jesadiya
Utiliser str_replace devrait fonctionner:
En fait je pensais que c'était le résultat souhaité - rechercher et remplacer vs valeur de remplacement. Peut-être que j'ai mal compris la question.
OriginalL'auteur Doug Kress
À la suite de Joseph, en réponse, à l'aide de preg_replace peut vous permettre d'utiliser le code dans d'autres situations:
OriginalL'auteur Pete