Lors de l'écriture d'une application récente, j'ai accidentellement commencé à remplir une matrice avant de la déclarer. J'utilise le signalement d'erreur E_ALL et une erreur n'a pas été renvoyée. Est-ce correct? Et si oui, y a-t-il des problèmes avec la déclaration des valeurs de tableau sans jamais déclarer le tableau réel? Peut-être que cela ne respecte pas les bonnes normes de programmation.Est-ce qu'un tableau PHP doit être déclaré avant utilisation?
Répondre
Tout en écrivant une application récente, je accidentellement commencé à remplir un tableau avant que je l'avait déclaré.
PHP est une langue faiblement typée. Votre instruction:
$array['value'] = 'Test string';
est une déclaration implicite (par affectation) d'un tableau associatif. Donc, un avis ne sera pas généré.
Cependant, si vous deviez écrire:
echo $array['value'];
devant un assigment, vous recevrez un avis Undefined variable
.
Non, vous ne devez pas
Et oui, il est une bonne habitude de déclarer le tableau pour augmenter le code redability
développiez que, ne vous ne pas « avoir » à, mais cela peut être bénéfique. De plus, si E_NOTICES est désactivé, vous ne verrez pas les erreurs provenant d'une variable non-initialisée. En production, vous devez l'éteindre, mais en développement, vous devez l'activer. Cela vous permettra de trouver des problèmes que vous ne pourriez pas voir.
Je suis d'accord. C'est toujours une bonne pratique de déclarer un tableau avant de l'utiliser. –
En outre, aucune raison de l'éteindre sur la production. Je veux dire, si votre code est propre, rien ne sera signalé. –
"En production, vous devriez l'éteindre" Pourquoi? Bien sûr "dev devrais résoudre les erreurs avant de prod", mais que faire si elles ne le font pas? Aussi improbable que cela puisse être, s'il y a des problèmes dans Prod, vous voulez les voir. Si vous avez des rapports d'erreur pour les afficher même dans Prod, et qu'il y a des erreurs, alors vous les attrapez, et s'il n'y a pas d'erreurs, il n'y a pas non plus de journaux. Il n'y a donc aucune raison de l'éteindre en production. – James
- 1. Oracle 'identifiant myschema.mytable doit être déclaré'
- 2. Exception non signalée java.sql.SQLException; doit être attrapé ou déclaré être jeté?
- 3. exception non signalée java.lang.ClassNotFoundException; doit être pris ou déclaré être jeté
- 4. PHP% opérateur, quel résultat doit être retourné?
- 5. PHP isset doit être sinon mis
- 6. php image flèche ligne doit être lisse
- 7. Le tableau est marqué comme écrasé et doit être réparé
- 8. « CFBundleVersion doit être une chaîne » d'OS X tableau de bord
- 9. À quoi un type doit-il être contraint avant qu'il puisse être assigné "null"?
- 10. chaîne php pour tableau (clé et val doit être la même chaîne)
- 11. struct - pourrait ne pas être initialisé avant utilisation
- 12. PHP comment vérifier si une requête MySQLi doit être fermée?
- 13. Un 'modèle' doit-il être déclaré comme un 'var' pour pouvoir s'y lier dans Spring Webflow 2?
- 14. Quand doit-uiviewcontrollers être déclarée comme propriétés
- 15. Erreur PHP: Nom de la fonction doit être une chaîne
- 16. aide avec script PHP pour lister répertoire doit être récursive
- 17. Dans les paramètres PHP, memory_limit doit-il être> upload_max_filesize?
- 18. Le fichier d'extension "curl" doit être chargé
- 19. Utilisation de tableau php en javascript, jquery
- 20. T-SQL doit être améliorée
- 21. connexion twitter doit être fermée?
- 22. Quelle couche doit être formatée?
- 23. MemoryStream doit être explicitement éliminé?
- 24. Netbeans - Doit être compilé badge
- 25. NullRefs doit-il être détecté?
- 26. type d'expression doit être booléenne
- 27. Quelle approche ALL Union doit être utilisée?
- 28. Une BLL doit-elle être apatride?
- 29. Pourquoi un fichier doit-il être renommé 30 fois avant d'être supprimé?
- 30. Si ma règle makefile modifie les répertoires, est-ce qu'elle doit être modifiée avant la fin?
Lorsque vous dites "non lancé", voulez-vous dire qu'il n'a pas été affiché à l'écran ou qu'il n'a pas été enregistré (si votre niveau d'enregistrement est correctement défini). S'il a été enregistré et n'affiche pas, vérifiez votre paramètre display_errors dans votre php.ini (Doit être réglé sur 1) - Ceci est une bonne référence: http://php.net/manual/fr/errorfunc.configuration.php – jlindenbaum