PHP - de Modifier l'objet courant dans la boucle foreach
Je me demandais si il est possible de modifier l'objet manipulé à l'intérieur d'un foreach
boucle
Je travaille avec un tableau d'objets $questions
et je veux aller à travers et de regarder pour les réponses associées à la question de l'objet dans ma db. Ainsi, pour chaque question d'aller chercher la réponse des objets et de mettre à jour les $question
à l'intérieur de mon foreach
boucle donc je peux/de sortie des processus d'ailleurs.
foreach($questions as $question){
$question['answers'] = $answers_model->get_answers_by_question_id($question['question_id']);
}
- comment à propos des références?
- Comme les deux ArtjomKurapov et @topener suggéré, j'ai été à la recherche pour 'passer' à l'aide de & signe. Merci les gars 🙂 have a nice day
- génial. Pourriez-vous s'il vous plaît marquer ma réponse tant mieux si cela vous a aidé?
Vous devez vous connecter pour publier un commentaire.
Il y a 2 façons de le faire
De cette façon, vous enregistrer la clé, de sorte que vous pouvez les mettre à jour à nouveau dans les principaux
$questions
variableou
L'ajout de la
&
permettra de garder la$questions
mis à jour. Mais je dirais que la première est recommandé, même si c'est plus courte (voir le commentaire de Paystey)Par le PHP
foreach
de la documentation:$question
variable en get_answers_by_question_id()foreach
est vraiment pas recommandé, la manière dont leforeach
passe autour de la valeur de la partie de la boucle résultats dans unpredicatble comportement. Il peut être plus long, mais vous êtes beaucoup plus sûr d'utiliser la méthode 1 ici.get_answers_by_question_id
.. et vous êtes juste de passage son idget_answers_by_question_id
ne se contente pas de récupérer les données de la DB et de la réalité des changements$question
à l'intérieur aussiforeach
, à propos de l'horreur comme ceci: stackoverflow.com/questions/3307409/... (@Nico, pour info, trop.)Sûrement à l'aide de
array_map
et si l'aide d'un récipient de mise en œuvreArrayAccess
pour dériver des objets est juste un plus intelligente, la sémantique de chemin à faire à ce sujet?Tableau carte sémantique sont similaires dans la plupart des langues et des implémentations que j'ai vu. Il est conçu pour retourner un tableau modifié fondé sur la contribution de l'élément de tableau (de haut niveau en ignorant la langue de la compilation/exécution type de préférence); une boucle est destiné à effectuer plus de logique.
Pour la récupération d'objets par ID /PK, selon si vous utilisez SQL ou pas (il me semble suggéré), j'aimerais utiliser un filtre pour m'assurer d'obtenir un tableau de valable PK s, puis d'imploser avec la virgule et le placer dans un SQL
IN()
clause de retourner le résultat. Il fait appel, au lieu de plusieurs, via le langage SQL, optimisation de la un peu de lacall->wait
cycle. Plus important encore mon code serait bien lire à quelqu'un de n'importe quelle langue, avec un degré de compétence et nous n'avons pas courir sur la mutabilité des problèmes.vs
Si vous savez ce que vous faites n'auront jamais la mutabilité des problèmes (en gardant à l'esprit si vous avez l'intention sur l'écrasement
$arr
vous pouvez toujours$arr = array_map
et explicite.