Quel est le moyen le plus simple et le plus basique de savoir si un nombre/variable est pair ou impair en PHP ? Est-ce que cela a quelque chose à voir avec le mod ?
J'ai essayé quelques scripts mais google ne livre pas pour le moment.
Quel est le moyen le plus simple et le plus basique de savoir si un nombre/variable est pair ou impair en PHP ? Est-ce que cela a quelque chose à voir avec le mod ?
J'ai essayé quelques scripts mais google ne livre pas pour le moment.
Vous avez eu raison de penser que Mod était un bon endroit pour commencer. Voici une expression qui renverra vrai si $number
est pair, faux si impair :
$number % 2 == 0
Fonctionne pour tout entier PHP valeur, voir aussi Opérateurs arithmétiques PHP .
Exemple :
$number = 20;
if ($number % 2 == 0) {
print "It's even";
}
Sortie :
C'est même
Si vous utilisez cette méthode en boucle ou en grande quantité, vous pouvez envisager le bitcheck suggéré par Arius2038, qui est très rapide. Le bitcheck est ma méthode préférée pour les contrôles pairs/impairs.
Cela fonctionne bien mais je me demande quelle est la logique derrière cela ? Pourquoi la valeur "true" est-elle donnée si "10 == 0" ?
La logique veut que tout nombre pair soit divisible par 2 sans reste. Si vous utilisez $number % 10 et que votre $number est égal à 20, la réponse sera vraie, mais pas si votre $number est égal à 22. Vous pourriez utiliser $number % 10 si vous essayez de trouver tous les 10 éléments d'une boucle, par exemple.
Ce serait certainement le moyen le plus rapide d'utiliser des entiers dans un langage comme le C, et de loin. Quelqu'un a-t-il fait des tests pour déterminer si cela est vrai aussi pour PHP ?
Il s'agit d'un opérateur bit à bit, je crois, donc à moins que vous ne sachiez ce que vous faites avec cette fantaisie, j'éviterais cette syntaxe.
Je dois admirer la syntaxe, les choses qui fonctionnent sans savoir pourquoi, vous rappelle à quel point nous sommes petits dans le monde de la physique, des mathématiques et, bien, ajoutez juste une ligne sur le numéro 1, pas 2...
J'utilise souvent les opérateurs bit à bit en JS. Par exemple if (~string.indexOf("@")) {}
au lieu de if (string.indexOf("@") !== -1) {}
. Je préfère que les conditions se traduisent par un simple vrai ou faux. Mais oui, cela peut être un peu déroutant pour les personnes qui ne sont pas familières avec cette syntaxe.
Une autre option consiste à vérifier si le dernier chiffre est un nombre pair :
$value = "1024";// A Number
$even = array(0, 2, 4, 6, 8);
if(in_array(substr($value, -1),$even)){
// Even Number
}else{
// Odd Number
}
Ou pour le rendre plus rapide, utilisez isset()
au lieu de array_search
:
$value = "1024";// A Number
$even = array(0 => 1, 2 => 1, 4 => 1, 6 => 1, 8 => 1);
if(isset($even[substr($value, -1)]){
// Even Number
}else{
// Odd Number
}
Ou pour le faire plus rapide ( battements mod operator
par moments ) :
$even = array(0, 2, 4, 6, 8);
if(in_array(substr($number, -1),$even)){
// Even Number
}else{
// Odd Number
}
Voici le test de temps comme une preuve de mes découvertes.
@grantwparks Eh bien, la différence entre utiliser isset & mod n'est que de 0,5007 seconde. Mais, recherche par tableau est très coûteux.
Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.
11 votes
Mod est le terme générique abrégé pour "modulo", c'est à dire arithmétique modulaire
5 votes
Plus d'informations aquí y compris : Pour déterminer le nombre pair ou impair, il est plus rapide et plus efficace d'utiliser la fonction par bit
&
opérateur :$a=3; if($a&1){echo 'odd';}else{echo 'even';} //returns 'odd'