downloads | documentation | faq | getting help | mailing lists | licenses | wiki | reporting bugs | php.net sites | conferences | my php.net

search for in the

bcmul> <bcdiv
[edit] Last updated: Fri, 24 May 2013

view this page in

bcmod

(PHP 4, PHP 5)

bcmodRetourne le reste d'une division entre nombres de grande taille

Description

string bcmod ( string $left_operand , string $modulus )

Retourne le reste de la division entre left_operand en utilisant modulus.

Liste de paramètres

left_operand

L'opérande de gauche, sous la forme d'une chaîne de caractères.

modulus

Le modulo, sous la forme d'une chaîne de caractères.

Valeurs de retour

Retourne le modulo, sous la forme d'une chaîne de caractères, ou NULL si modulus vaut 0.

Exemples

Exemple #1 Exemple avec bcmod()

<?php
echo bcmod('4''2'); // 0
echo bcmod('2''4'); // 2
?>

Voir aussi

  • bcdiv() - Divise deux nombres de grande taille



bcmul> <bcdiv
[edit] Last updated: Fri, 24 May 2013
 
add a note add a note User Contributed Notes bcmod - [6 notes]
up
1
drahoszdenek at gmail dot com
3 months ago
The modulus can be only integer. For "floats" bcmod returns 0:

<?php
echo bcmod('10', '2.1'); // 0
?>

For real modulus you can use BN-PHP project (hosted at Bitbucket):

<?php
$eval
= new \BN\Expression\ExpressionEvaluator();
$operators = new \BN\Expression\OperatorsFactory();
$eval->setOperators($operators->getOperators(array('%')));
       
echo
$eval->evaluate('10 % 2.1'); // 1.6
echo $eval->evaluate('10 % -2.1'); // 1.6
echo $eval->evaluate('-10 % 2.1'); // -1.6
echo $eval->evaluate('-10 % -2.1'); // -1.6
?>
up
1
lauris at night dot lt
9 years ago
<?php
/**
 * my_bcmod - get modulus (substitute for bcmod)
 * string my_bcmod ( string left_operand, int modulus )
 * left_operand can be really big, but be carefull with modulus :(
 * by Andrius Baranauskas and Laurynas Butkus :) Vilnius, Lithuania
 **/
function my_bcmod( $x, $y )
{
   
// how many numbers to take at once? carefull not to exceed (int)
   
$take = 5;    
   
$mod = '';

    do
    {
       
$a = (int)$mod.substr( $x, 0, $take );
       
$x = substr( $x, $take );
       
$mod = $a % $y;   
    }
    while (
strlen($x) );

    return (int)
$mod;
}

// example
echo my_bcmod( "7044060001970316212900", 150 );
?>
up
2
admin at deosnet dot com
5 months ago
This function is also equivalent to :

<?php
   
echo 4%2; // 0
   
echo 2%4; // 2
?>
up
0
ArleCamille (okw1003 at gmail dot com)
3 years ago
GCD made in Euclidian algorithm:
<?php
function bcgcd($a, $b)
{
    if(
$a < $b)
    {
       
$t = $b;
       
$b = $a;
       
$a = $t;
        unset(
$t);
    }
    if(
bcmod($a, $b) == "0") return $b;
    else return
bcgcd($b, bcmod($a, $b));
}
?>
hope this helps.
up
0
mcuelenaere at gmail dot com
5 years ago
Heres an useful IBAN generate function:

<?php
function controleer_iban($iban) {
   
$iban = str_replace(array(" ", "  ", "   ", "\t"), "", $iban);
   
$iban = strtoupper(str_replace(" ", "", $iban));
    if(
strlen($iban)>34)
        return
false;
   
$acceptabel = "A B C D E F G H I J K L M N O P Q R S T U V W X Y Z 1 2 3 4 5 6 7 8 9 0";
   
$acceptabel = explode(" ", $acceptabel);
    for(
$i = 0; $i<strlen($iban); $i++) {
        if(
in_array(substr($iban, $i, 1), $acceptabel) === false)
            return
false;
    }
   
$alfa = "A B C D E F G H I J K L M N O P Q R S T U V W X Y Z";
   
$alfa = explode(" ", $alfa);
    for(
$i = 1; $i<27; $i++) {
       
$alfa_replace[] = $i+9;
    }
   
$controlegetal = str_replace($alfa, $alfa_replace, substr($iban, 4, strlen($iban)-4).substr($iban, 0, 2)."00");
   
$controlegetal = 98 - (int)bcmod($controlegetal,97);
    if((int)
$controlegetal === (int)substr($iban, 2, 2))
        return
true;
    else
        return
false;   
}
?>
up
0
sebas at stageprikbord dot nl
6 years ago
function bc_is_even($int_str) {
  return (int)!($int_str & 1);
}

More resource efficient version of 'bc_is_even'.

 
show source | credits | stats | sitemap | contact | advertising | mirror sites