Lorsque nous utilisons PHP, nous rencontrons parfois la fonction Timezone_abbreviations_list () renvoie un tableau vide. La fonction de cette fonction consiste à renvoyer un tableau contenant toutes les abréviations du fuseau horaire et leurs détails correspondants. En règle générale, nous voulons obtenir une liste d'abréviations de fuseau horaire via cette fonction afin de gérer les opérations liées au temps ou les dates de format. Cependant, le retour d'un tableau vide peut causer des problèmes, surtout lorsque nous comptons sur cette fonction pour les opérations de fuseau horaire. Ensuite, cet article vous fournira plusieurs solutions à ce problème.
Tout d'abord, assurez-vous que votre environnement PHP est correctement configuré avec toutes les extensions liées au fuseau horaire. Si vous utilisez une configuration PHP standard, la fonction Timezone_abbreviations_list () doit normalement renvoyer les données du refus de temps. Si vous retournez un tableau vide, il se peut que votre configuration PHP soit des bibliothèques liées au fuseau horaire manquant, ou que ces bibliothèques ne soient pas chargées correctement.
Solution:
Vérifiez si l'extension de date est activée en PHP, vous pouvez la confirmer dans le fichier de configuration PHP PHP.ini . Assurez-vous que ce qui suit n'est pas commenté:
<span><span><span class="hljs-attr">extension</span></span><span>=php_date.dll </span><span><span class="hljs-comment">; Windows système</span></span><span>
</span><span><span class="hljs-attr">extension</span></span><span>=calendar.so </span><span><span class="hljs-comment">; Linux système</span></span><span>
</span></span>Redémarrez le serveur Web pour que la modification prenne effet.
Les fonctions liées au fuseau horaire de PHP peuvent changer à mesure que la version est mise à jour. Si votre version PHP est plus ancienne, certaines fonctions peuvent ne pas fonctionner correctement. Par conséquent, il est recommandé d'utiliser la dernière version de PHP, ou du moins de passer à une stable et de prendre en charge la dernière bibliothèque de fuseau horaire.
Solution:
Exécutez la commande suivante à partir de la ligne de commande pour vérifier la version PHP actuelle:
<span><span>php -v
</span></span>Si la version PHP est trop faible, passez à une version plus récente. Par exemple, utilisez des outils de gestion des packages tels que APT ou YUM pour mettre à niveau, ou télécharger et installer la dernière version PHP.
Si Timezone_abbreviations_list () renvoie un tableau vide et ne peut pas être résolu via la configuration ou la mise à niveau de la version, vous pouvez envisager d'utiliser la classe DateTimeZone pour obtenir des informations liées au fuseau horaire. Bien que DateTimeZone soit principalement utilisé pour gérer un seul fuseau horaire, il est également possible d'obtenir une liste de fuseau horaire en combinant d'autres méthodes.
Exemple de code:
<span><span><span class="hljs-meta"><?php</span></span><span>
</span><span><span class="hljs-variable">$timezone_identifiers</span></span><span> = </span><span><span class="hljs-title class_">DateTimeZone</span></span><span>::</span><span><span class="hljs-title function_ invoke__">listIdentifiers</span></span><span>();
</span><span><span class="hljs-variable">$abbreviations</span></span><span> = [];
</span><span><span class="hljs-keyword">foreach</span></span><span> (</span><span><span class="hljs-variable">$timezone_identifiers</span></span><span> </span><span><span class="hljs-keyword">as</span></span><span> </span><span><span class="hljs-variable">$timezone</span></span><span>) {
</span><span><span class="hljs-variable">$dtz</span></span><span> = </span><span><span class="hljs-keyword">new</span></span><span> </span><span><span class="hljs-title class_">DateTimeZone</span></span><span>(</span><span><span class="hljs-variable">$timezone</span></span><span>);
</span><span><span class="hljs-variable">$transitions</span></span><span> = </span><span><span class="hljs-variable">$dtz</span></span><span>-></span><span><span class="hljs-title function_ invoke__">getTransitions</span></span><span>();
</span><span><span class="hljs-keyword">foreach</span></span><span> (</span><span><span class="hljs-variable">$transitions</span></span><span> </span><span><span class="hljs-keyword">as</span></span><span> </span><span><span class="hljs-variable">$transition</span></span><span>) {
</span><span><span class="hljs-variable">$abbreviations</span></span><span>[] = </span><span><span class="hljs-variable">$transition</span></span><span>[</span><span><span class="hljs-string">'abbr'</span></span><span>];
}
}
</span><span><span class="hljs-variable">$abbreviations</span></span><span> = </span><span><span class="hljs-title function_ invoke__">array_unique</span></span><span>(</span><span><span class="hljs-variable">$abbreviations</span></span><span>);
</span><span><span class="hljs-title function_ invoke__">print_r</span></span><span>(</span><span><span class="hljs-variable">$abbreviations</span></span><span>);
</span><span><span class="hljs-meta">?></span></span><span>
</span></span>Dans cet exemple, nous obtenons tous les identifiants de fuseau horaire via DateTimeZone :: listIdentifiants () , puis obtenons les informations de conversion du fuseau horaire via la méthode getTransitions () , en extraction de l'abréviation du fuseau horaire. Enfin, utilisez Array_Unique () pour dédupliquer et sortir toutes les abréviations du fuseau horaire.
Si aucune des méthodes ci-dessus ne résout le problème, ou si vous n'avez besoin que d'une abréviation de fuseau horaire spécifique, vous pouvez y faire face en personnalisant une liste d'abréviations de fuseau horaire. Bien que cette approche soit un peu gênante, dans certains cas, elle peut vous aider à contourner le problème de ne pas pouvoir obtenir l'abréviation du fuseau horaire.
Exemple de code:
<span><span><span class="hljs-meta"><?php</span></span><span>
</span><span><span class="hljs-variable">$timezone_abbreviations</span></span><span> = [
</span><span><span class="hljs-string">'UTC'</span></span><span> => </span><span><span class="hljs-string">'Coordinated Universal Time'</span></span><span>,
</span><span><span class="hljs-string">'EST'</span></span><span> => </span><span><span class="hljs-string">'Eastern Standard Time'</span></span><span>,
</span><span><span class="hljs-string">'PST'</span></span><span> => </span><span><span class="hljs-string">'Pacific Standard Time'</span></span><span>,
</span><span><span class="hljs-string">'CST'</span></span><span> => </span><span><span class="hljs-string">'Central Standard Time'</span></span><span>,
</span><span><span class="hljs-comment">// Autres abréviations du fuseau horaire</span></span><span>
];
</span><span><span class="hljs-title function_ invoke__">print_r</span></span><span>(</span><span><span class="hljs-variable">$timezone_abbreviations</span></span><span>);
</span><span><span class="hljs-meta">?></span></span><span>
</span></span>De cette façon, vous pouvez créer manuellement un tableau contenant des abréviations de fuseau horaire courantes et leurs descriptions, qui, bien que n'ayant pas la possibilité de mettre à jour automatiquement, est suffisante dans certains cas.
Parfois, le problème peut être lié au fichier de données du fuseau horaire. Si vous constatez que Timezone_abbreviations_list () renvoie un tableau vide et que d'autres méthodes ne peuvent pas la résoudre, cela peut être dû au fichier de données du fuseau horaire corrompu ou incomplet. La base de données du fuseau horaire utilisé par PHP provient généralement de la base de données du fuseau horaire IANA, qui change à la mise à jour de PHP.
Solution:
Vérifiez que les derniers fichiers de données du fuseau horaire sont correctement installés sur votre serveur.
Vous pouvez vous assurer que ces données sont à jour en mettant à jour les paquets de fuseau horaire du système d'exploitation. Par exemple, dans Linux Systems, vous pouvez exécuter la commande suivante pour mettre à jour les données du fuseau horaire:
<span><span>sudo apt-get install tzdata
</span></span>Lorsque vous rencontrez le problème que Timezone_abbreviations_list () renvoie un tableau vide, vous pouvez le résoudre en vérifiant la configuration PHP, en mettant à niveau la version PHP, en utilisant des méthodes alternatives (telles que la classe DatetimeZone ), ou en créant manuellement une liste d'abréviation de fuseau horaire. Grâce à ces méthodes, vous pouvez vous assurer que votre application peut gérer correctement les fonctions liées au fuseau horaire et éviter les erreurs causées par les données de fuseau horaire manquantes. J'espère que les solutions fournies dans cet article peuvent vous aider à résoudre le problème en douceur!