// a beautiful multidimensional array
public $form = array (
array(
'field' => 'email',
array(
'params' =>
array(
'rule' => 'email',
'on' => 'create',
'required' => true,
),
),
array(
'params' =>
array(
'rule' => 'email',
'on' => 'update',
'required' => false,
)
)
)
);
// beautiful foreach loops
public function validate($form) {
foreach ($form as $valueA) {
$field = $valueA['field'];
foreach ($valueA as $valueB) {
$params = $valueB['params'];
foreach ($valueB as $valueC) {
$rule = $valueC['on'];
$on = $valueC['on'];
$required = $valueC['required'];
$this->isValid($field, $rule, $on, $required);
}
}
}
}
// they do not work together!!!
Répondre
Il semble que vous allez générer des erreurs dans votre deuxième boucle:
foreach ($ValueA as $ValueB) {
Cela va inclure field
dans la boucle et rencontrera des problèmes quand il essaie d'y accéder en tant que tableau.
Aussi, je pense que vous voulez dire pour votre troisième boucle soit:
foreach ($params as $ValueC) {
Sinon, elle se heurte aux mêmes problèmes que la boucle du milieu. Je pense que si vous avez l'intention de continuer à l'utiliser comme un tableau plutôt que de le refactoriser dans une classe comme d'autres l'ont suggéré, vous devriez le restructurer afin que les données nommées soient toutes au même niveau. Notez que cela réduit la complexité du tableau (un peu) et des boucles (beaucoup).
public $form = array (
array(
'field' => 'email',
'params' => array(
array(
'rule' => 'email',
'on' => 'create',
'required' => true,
),
array(
'rule' => 'email',
'on' => 'update',
'required' => false,
)
)
)
);
public function validate($form) {
foreach ($form as $field_params) {
$field = $field_params['field'];
foreach ($field_params['params'] as $param) {
$this->isValid($field, $param['rule'], $param['on'], $param['required']);
}
}
}
Cette page a quelques exemples d'utilisation des boucles pour accéder aux éléments d'un tableau multidimensionnel: http://www.webcheatsheet.com/PHP/multidimensional_arrays.php
Il manque des boucles foreach pour le tableau en trois dimensions :-( –
Eh bien, vous pourriez avoir une variable qui compte les lignes comme ils sont entrés dans le tableau et faire Je ne suis pas un expert en PHP, mais je pense que vous devriez être capable de faire quelque chose de similaire –
Comme « beau » que ces tableaux sont, semble-vous de moi comme quelque chose une classe serait mieux, et Ce serait beaucoup plus facile à traiter.
Ce tableau multidimensionnel ne me semble pas beau. Cela ressemble à un gâchis. Cela semble beaucoup plus logique: me
C'est parce qu'il va y avoir plusieurs 'field' et 'param', donc ils doivent être dans des tableaux séparés. –
Essayez de déboguer ce qui est $valueX
dans votre cas var_dump()
par exemple.
peut être foreach($array as $key => $value)
est ce que vous cherchez pour
- 1. Objet stdClass et boucles foreach
- 2. boucle PHP foreach par tableau multidimensionnel
- 3. Comment est-ce que je peux traduire ces sed-one et sed-one-liners en informatica?
- 4. WCF: Comment est-ce que je peux recréer par programme ces valeurs App.config?
- 5. Comment faire pour que LINQ en XML et HTML fonctionnent ensemble?
- 6. Comment est-ce que je peux patcher des assemblys .NET?
- 7. Comment est-ce que je peux simplifier ce jquery répétitif?
- 8. Comment est-ce que je peux fondre dans un ensemble d'images? pas un diaporama
- 9. Comment faire pour que ces importations relatives fonctionnent dans Python 3?
- 10. Comment est-ce que je peux faire passer la page shift + barre d'espace dans Vim?
- 11. Comment est-ce que je peux rendre à un cubemap?
- 12. Comment diviser un tableau multidimensionnel en PHP?
- 13. Comment faire un tableau multidimensionnel dynamique en ruby?
- 14. tableau multidimensionnel Javascript délivre
- 15. Comment est-ce que je peux énumérer DataTable?
- 16. Comment est-ce que je peux compter les nombres uniques dans un tableau sans réarranger les éléments de tableau?
- 17. Tableau de caractères multidimensionnel
- 18. Tableau multidimensionnel PHP
- 19. Comment est-ce que je peux faire une chaîne avec des caractères cyrilliques correctement?
- 20. Comment faire pour que Groovy et JAXB jouent bien ensemble
- 21. Trier un tableau multidimensionnel
- 22. Tableau multidimensionnel question: D'où viennent les [enfants]?
- 23. PHP - foreach (tableau d'un tableau)
- 24. C# - Je sais que je peux le faire dans LINQ, mais je ne peux pas le faire fonctionner
- 25. Comment est-ce que je peux être libre dans le code d'un objet invariant?
- 26. Est-ce que PHPUnit et XDebug fonctionneront ensemble?
- 27. Comment itérer des lignes et des colonnes d'un tableau multidimensionnel?
- 28. Sérialisation Java d'un tableau multidimensionnel
- 29. C# Code de simplification Question: Séquentielle Foreach boucles
- 30. Comment est-ce que je peux faire imageboxe sur le formulaire plus rapidement sur l'exécution dans des Winforms .net?
Pourquoi tout est si « beau? » – BobbyShaftoe
J'essaie d'écrire du code maintenable. –
il semble que cela pourrait être simplifié encore plus loin, je ne aime pas la façon dont votre emballage 'params' dans un tableau –