2015-11-27 1 views
0

J'essaie de savoir si une chaîne, $ a, est divisible par une autre, $ b.

Tous les exemples que je peux trouver me dire d'utiliser le module, par exemple:

if(($a %$b) == 0) : echo "Is dividible" ; endif; 

Cependant, parce que le module retourne le reste du calcul, cela ne fonctionne pas si $ b est plus grand que $ un , parce qu'il n'y a toujours pas de reste.

Comment vérifier la divisibilité où $ b est parfois (mais pas toujours) supérieur à $ a?

+1

'if ($ a% $ b == 0 || $ b% $ a == 0)'? – Federkun

+1

Vous voulez dire que $ a/$ b retournera un résultat entier (pas de reste) ..... si $ b est supérieur à $ a, il aura toujours un reste –

+0

s'il ne fonctionnait pas si '$ b> $ a' pourquoi n'assure-t-on pas '$ b <$ a' avec certains si avant ce code? Eh bien, Federico a eu une réponse directe. –

Répondre

2

pourquoi faites-vous pas en fonction:

function isDivisible($smaller,$bigger){ 
    //handle division by zero, and hmm.. let's cover negative numbers too 
    if($smaller<=0) return false; 
    if($smaller>$bigger) return false; 
    return !($bigger % $smaller); 
} 

La négation ! devrait b Une manière de travailler et élégante pour le manipuler.

-1

Vous pouvez utiliser l'opérateur ternaire comme exemple ci-dessous

(($a%$b)==0)?echo "Is divisible": echo "not divisible"; 
1

Que diriez-vous:

echo (($a < $b) && (($a % $b) == 0)) ? "Is dividible" : "Is not divisable" ; 
+0

Si $ b est supérieur à $ b, vous obtiendrez TOUJOURS une fraction. Que voulez-vous dire par «Découvrez si divisible par" Voulez-vous dire la fracture renvoie un nombre entier? Si oui, alors tout ce que vous avez besoin de le faire ci-dessus. Si vous voulez dire dans geek parler divisible, alors tout est divisible par tout à part zéro (diviser par zéro - erreur) – wkdmarty

0
if($a==$b) 
{echo "divisible a and b are equal"; 
} 
else if($a>$b){ 
    if(($a %$b) == 0) : echo "Is dividible" ; endif;  
} 
else{ 
echo "\$b is either large or equal to \$a"; 
}  
+0

échouera à tort pour $ a == $ b tel quel. – Calimero

+0

merci Calimero, je l'ai édité –

0

Essayez ceci il devrait fonctionner:

$a = 7; 
$b = 14; 

//echo (($a > $b) && (($a % $b) == 0)) ? "is divisible":"no divisible"; 

echo (($a < $b) && (($b % $a) == 0)) ? "Is dividible" : "Is not divisable" ;