php教程

MOD

PHP code

<?php
/*
 * Makes the value of "result" congruent to "value1" modulo "value2".
 * opcode number: 5
 */
echo 3;
?>

PHP opcodes

Function name: (null)

Compiled variables: none

line#op fetchextreturn operands
60 MOD   ~0 6,3
 1 ECHO     ~0
72 RETURN     1

User Contributed Notes

martynas dot stropa at gmail dot com 28-Oct-2014 04:45
A function to handle integers of any length, including negatives. Returns remainder but also calculates division in the process (could be useful in some cases).

<?php
function remainder($dividend, $divisor) {
    if (
$dividend == 0 || $divisor == 0) return 0;

   
$dividend .= '';
   
$remainder = 0;
   
$division = '';
   
   
// negative case
   
while ($dividend < 0) {
       
$dividend += $divisor;
        if (
$dividend >= 0) return $dividend;
    }
   
   
// positive case
   
while (($remainder.$dividend)*1 > $divisor) {
       
// get remainder big enough to divide
       
while ($remainder*1 < $divisor) {
           
$remainder .= $dividend[0];
           
$remainder *= 1;
           
$dividend = substr($dividend, 1);
        }
       
       
// get highest multiplicator for remainder
       
$mult = floor($remainder / $divisor);

       
// add multiplicator to division
       
$division .= $mult.'';

       
// subtract from remainder
       
$remainder -= $mult*$divisor;
    }
   
   
// add remaining zeros if any, to division
   
if (strlen($dividend) > 0 && $dividend*1 == 0) {
       
$division .= $dividend;
    }
   
    return
$remainder;
}
doug at unlikelysource dot com 05-Oct-2014 11:30
To determine odd or even it's faster and more efficient to use the bitwise & operator:
$a = 3;
if ($a & 1) {
    echo 'odd';
} else {
    echo 'even';
}
// returns 'odd'
napora dot adam at gmail dot com 25-May-2012 04:22
Might be helpful:

I had to create and "INSERT INTO" on every 50th row:

<?php
$lineBreak
= 50;
$tableName = 'user';
$tableFields = 'id, name, password';
?>

in the loop:

<?php
if ($counter === 0 || $counter % $lineBreak === 0) {
    echo
"INSERT INTO $tableName ($tableFields) VALUES (";
} else {
    echo
' (';
}

// add values comma-delimited

if ($counter === 0 || $counter % $lineBreak === 0) {
   
$insertStmt .= ');';
} else {
   
$insertStmt .= '),';
}
?>

(in my case I had to check if $no % $o === 0)

CopyRight © 2008-2022 verySource.Com All Rights reserved. 京ICP备17048824号-1 京公网安备:11010502034788