Dans la programmation PHP, nous devons souvent déterminer si plusieurs options sont activées. Par exemple, un élément de configuration peut contenir plusieurs indicateurs binaires, chaque indicateur représente si une fonction est activée. Le mode de jugement traditionnel est généralement d'utiliser si l'on en juge, le code est long et inefficace. En fait, la fonction Bindec () intégrée de PHP peut nous aider à réaliser rapidement ce type de jugement et à combiner des compétences informatiques pour écrire du code concis et efficace.
Bindec () est une fonction intégrée PHP qui convertit les chaînes binaires en nombres décimaux correspondants. Il reçoit une chaîne composée de caractères «0» et «1» et renvoie la valeur décimale correspondante.
Exemple:
<?php
$binary = "1011";
$decimal = bindec($binary); // 11
echo $decimal;
?>
Supposons que nous ayons une chaîne de configuration, chaque chiffre représente si une option est activée, «1» signifie, et «0» signifie désactivé:
$options = "10101"; // Indique le1、3、5Les options sont activées
Appel Bindec ($ Options) pour obtenir la valeur décimale correspondante:
<?php
$options = "10101";
$decimal = bindec($options); // 21
?>
Si vous souhaitez déterminer si une option spécifique est activée, comme la troisième option (compter de droite à gauche), vous n'avez qu'à effectuer un bit et un calcul:
<?php
$decimal = bindec("10101"); // 21
$flag = 1 << 2; // 1 et 13Massacre,depuis0Commencer à compter,2代表1 et 13Peu
$is_enabled = ($decimal & $flag) !== 0;
echo $is_enabled ? "Ouvrir" : "fermeture";
?>
L'état de toutes les options peut être représenté par des chaînes binaires. Après les avoir convertis en décimales, ils peuvent être rapidement jugés avec un peu de masque, ce qui simplifie considérablement le code et convient au jugement de l'État par lots.
Exemple de code:
<?php
// Chaîne de configuration d'option,La longueur représente le nombre d'options
$options = "11011"; // Indique le1、2、4、5Les options sont activées
// Convertir en décimal
$decimal = bindec($options);
// Définissez le masque d'option pour détecter,比如检测1 et 12和1 et 14个选项是否都Ouvrir
$mask = (1 << 1) | (1 << 3); // 1 et 12和1 et 14Peu
// 判断是否同时Ouvrir
if (($decimal & $mask) === $mask) {
echo "1 et 12和1 et 14个选项均已Ouvrir";
} else {
echo "1 et 12和1 et 14个选项未全部Ouvrir";
}
?>
Gestion de l'autorisation : utilisez une chaîne d'indicateurs binaires pour représenter les autorisations utilisateur pour déterminer rapidement si vous avez certaines autorisations.
Commutateur fonctionnel : configurez plusieurs commutateurs de fonction pour enregistrer les champs de base de données et effacer la logique.
Avantages de performance : efficacité informatique élevée, adaptée aux besoins de haute performance.
Combiné avec BINSEC () pour analyser les chaînes binaires, le code est concis et facile à comprendre et facile à entretenir.