PHP 8.1.6 Released!

# Math 関数

## 目次

• abs — 絶対値
• acos — 逆余弦（アークコサイン）
• acosh — 逆双曲線余弦（アークハイパボリックコサイン）
• asin — 逆正弦（アークサイン）
• asinh — 逆双曲線正弦（アークハイパボリックサイン）
• atan2 — 2 変数のアークタンジェント
• atan — 逆正接（アークタンジェント）
• atanh — 逆双曲線正接（アークハイパボリックタンジェント）
• base_convert — 数値の基数を任意に変換する
• bindec — 2 進数 を 10 進数に変換する
• ceil — 端数の切り上げ
• cos — 余弦（コサイン）
• cosh — 双曲線余弦（ハイパボリックコサイン）
• decbin — 10 進数を 2 進数に変換する
• dechex — 10 進数を 16 進数に変換する
• decoct — 10 進数を 8 進数に変換する
• exp — e の累乗を計算する
• expm1 — 値がゼロに近い時にでも精度を保つために exp(number) - 1 を返す
• fdiv — IEEE 754 に従い、数値の除算を行う
• floor — 端数の切り捨て
• fmod — 引数で除算をした際の剰余を返す
• getrandmax — 乱数の最大値を取得する
• hexdec — 16 進数を 10 進数に変換する
• hypot — 直角三角形の斜辺の長さを計算する
• intdiv — 整数値の除算
• is_finite — 値が有限の数値であるかどうかを判定する
• is_infinite — 値が無限大であるかどうかを判定する
• is_nan — 値が非数かどうかを判定する
• lcg_value — 複合線形合同法
• log10 — 底が 10 の対数
• log1p — 値がゼロに近い時にでも精度を保つ方法で計算した log(1 + number) を返す
• log — 自然対数
• max — 最大値を返す
• min — 最小値を返す
• mt_getrandmax — 乱数値の最大値を表示する
• mt_rand — メルセンヌ・ツイスター乱数生成器を介して乱数値を生成する
• mt_srand — メルセンヌ・ツイスター乱数生成器にシードを指定する
• octdec — 8 進数を 10 進数に変換する
• pi — 円周率の値を得る
• pow — 指数表現
• rand — 乱数を生成する
• round — 浮動小数点数を丸める
• sin — 正弦（サイン）
• sinh — 双曲線正弦（ハイパボリックサイン）
• sqrt — 平方根
• srand — 乱数生成器を初期化する
• tan — 正接（タンジェント）
• tanh — 双曲線正接（ハイパボリックタンジェント） add a note

### User Contributed Notes 35 notes

lummox
14 years ago
``` Wouldn't the following function do the same but a lot easier than the one in the comment before?function trimInteger(\$targetNumber,\$newLength) {    return \$targetNumber%pow(10,\$newLength); } ```
daniel at g-loc dot org
16 years ago
``` If you're an aviator and needs to calculate windcorrection angles and groundspeed (e.g. during flightplanning) this can be very useful. \$windcorrection = rad2deg(asin(((\$windspeed * (sin(deg2rad(\$tt - (\$winddirection-180))))/\$tas)))); \$groundspeed = \$tas*cos(deg2rad(\$windcorrection)) + \$windspeed*cos(deg2rad(\$tt-(\$winddirection-180))); You can probably write these lines more beautiful, but they work! ```
Anonymous
4 years ago
``` And the reason I needed a Factorial function is because I there were no nPr or nCr functions native to PHP, either.function n_pick_r(\$n,\$r){\$n=(int)\$n; \$r=(int)\$r;return (fact(\$n)/fact(\$n-\$r));}function n_choose_r(\$n,\$r){\$n=(int)\$n; \$r=(int)\$r;return (n_pick_r(\$n,\$r)/fact(\$r));}Hope that helps someone!exmple:https://vb.3dlat.com/ ```
pat.mat AT sympatico DOT com
17 years ago
``` For people interest in Differential Equations, I've done a function that receive a string like: x^2+x^3 and put it in2x+3x^2 witch is the differantial of the previous equation.In the code there is one thing missing: the \$string{\$i} is often going outOfBound (Uninitialized string offset: 6 in...)if your error setting is set a little too high... I just dont know how to fix this.So there is the code for differential equation with (+ and -) only:<?function differentiel(\$equa){    \$equa = strtolower(\$equa);    echo "Equation de depart: ".\$equa."<br>";    \$final = "";         for(\$i = 0; \$i < strlen(\$equa); \$i++)    {        //Make a new string from the receive \$equa        if(\$equa{\$i} == "x" && \$equa{\$i+1} == "^")        {            \$final .= \$equa{\$i+2};            \$final .= "x^";            \$final .= \$equa{\$i+2}-1;        }        elseif(\$equa{\$i} == "+" || \$equa{\$i} == "-")        {            \$final .= \$equa{\$i};        }        elseif(is_numeric(\$equa{\$i}) && \$i == 0)        {            //gerer parenthese et autre terme generaux + gerer ^apres: 2^2            \$final .= \$equa{\$i}."*";        }        elseif(is_numeric(\$equa{\$i}) && \$i > 0 && \$equa{\$i-1} != "^")        {            //gerer ^apres: 2^2            \$final .= \$equa{\$i}."*";        }        elseif(\$equa{\$i} == "^")        {            continue;        }        elseif(is_numeric(\$equa{\$i}) && \$equa{\$i-1} == "^")        {            continue;        }        else        {            if(\$equa{\$i} == "x")            {                \$final .= 1;            }            else            {                \$final .= \$equa{\$i};             }        }    }    //    //Manage multiplication add in the previous string \$final    //    \$finalMul = "";    for(\$i = 0; \$i < strlen(\$final); \$i++)    {        if(is_numeric(\$final{\$i}) && \$final{\$i+1} == "*" && is_numeric(\$final{\$i+2}))        {            \$finalMul .= \$final{\$i}*\$final{\$i+2};        }        elseif(\$final{\$i} == "*")        {            continue;        }        elseif(is_numeric(\$final{\$i}) && \$final{\$i+1} != "*" && \$final{\$i-1} == "*")        {            continue;        }        else        {            \$finalMul .= \$final{\$i};            }    }    echo "equa final: ".\$finalMul;}?>I know this is not optimal but i've done this quick :)If you guys have any comment just email me.I also want to do this fonction In C to add to phpCore maybe soon...Patoff ```
-2
info at gavinvincent dot co dot uk
17 years ago
``` If you need to deal with polar co-ordinates for somereason you will need to convert to and from x,y for input and output in most situations: here are some functions to convert cartesian to polar and polar to cartesian<?//returns array of r, theta in the range of 0-2*pi (in radians)function rect2polar(\$x,\$y){     if(is_numeric(\$x)&&is_numeric(\$y))    {        \$r=sqrt(pow(\$x,2)+pow(\$y,2));        if(\$x==0)        {             if(\$y>0) \$theta=pi()/2;            else \$theta=3*pi()/2;        }        else if(\$x<0) \$theta=atan(\$y/\$x)+pi();        else if(\$y<0) \$theta=atan(\$y/\$x)+2*pi();        else \$theta=atan(\$y/\$x);        \$polar=array("r"=>\$r,"theta"=>\$theta);        return \$polar;    }    else return false;}//r must be in radians, returns array of x,yfunction polar2rect(\$r,\$theta){ if(is_numeric(\$r)&&is_numeric(\$theta)) {        \$x=\$r*cos(\$theta);    \$y=\$r*sin(\$theta);    \$rect=array("x"=>\$x,"y"=>\$y); } else {   return false; }}?> ```
-3
php at keith tyler dot com
11 years ago
``` Another ordinal method, which does not involve utilizing date functions:<?phpsprintf( "%d%s", \$t, array_pop( array_slice( array_merge( array( "th","st","nd","rd"), array_fill( 4,6,"th")), \$t%10, 1)));'?> ```
-3
florian at shellfire dot de
18 years ago
``` Please note that shorter is not always better (meaning that really short faculty implementation above). In my opinion, a clearer way to code this is, including a check for negative or non-integer values. In order to calculate the faculty of a positive integer, an iterative way (which might be harder to understand) is usually a bit faster, but I am using it only for small values so it is not really important to me: <?php     // Calculate the Faculty of a positive int-value     function iFaculty(\$a_iFac)     {       if (\$a_iFac > 0)       {           return \$a_iFac * \$this->iFaculty(\$a_iFac - 1);       }       elseif (\$a_iFac == 0)       {           return 1;       }       else       {           return 0;  // Wrong argument!       }     } ?> I've also written another function to calculate the binomial coefficient of 2 values, I didn't find it anywhere yet so I hope it might help someone (works fine with the above stated faculty-function and ready to be used inside of your own classes!) <?php     // calculates the binomial coefficient "n over k" of 2 positive int values     // for n >= k     function iBinCoeff(\$a_iN, \$a_iK)     {         // the binomial coefficient is defined as n! / [ (n-k)! * k! ]         return \$this->iFaculty(\$a_iN) / (\$this->iFaculty(\$a_iN - \$a_iK) * \$this->iFaculty(\$a_iK));        } ?> ```
-3
Mike
14 years ago
``` //had a mistake in last post, heres the corrected version/*Just a simple function to trim digits from the left side of an integer. TRIM DOWN TO 4-> (ie. 987654 => 7654)*/function trimInteger(\$targetNumber,\$newLength) {    \$digits = pow(10,\$newLength);    \$s = (\$targetNumber/ \$digits); //make the last X digits the                  decimal part    \$t = floor(\$targetNumber / \$digits); //drop the last X digits (the decimal part)    \$h = \$s - \$t; //remove all  but the decimal part    \$newInteger = (\$h*\$digits); //make the everything after the decimal point the new number    return \$newInteger;} ```
-4
Chronial "at" cyberpunkuniverse.de
18 years ago
``` Here are are a nPr and a nPc function(had to define NaN - don't know, how to this the "rigth" way)<?phpdefine (NaN,acos(1.01));function nCr(\$n,\$r){   if (\$r > \$n)      return NaN;   if ((\$n-\$r) < \$r)      return nCr(\$n,(\$n-\$r));   \$return = 1;   for (\$i=0;\$i < \$r;\$i++){      \$return *= (\$n-\$i)/(\$i+1);   }   return \$return;}function nPr(\$n,\$r){   if (\$r > \$n)      return NaN;   if (\$r)      return \$n*(nPr(\$n-1,\$r-1));   else      return 1;}?> ```
-6
jbeardsl [found_at] gte [d0t] net
19 years ago
``` I was looking for a truncate function. Not finding one, I wrote my own. Since it deals with everything as a number, I imagine it's faster than the alternative of using string functions. HTH... <?php function truncate (\$num, \$digits = 0) {     //provide the real number, and the number of     //digits right of the decimal you want to keep.     \$shift = pow(10, \$digits);     return ((floor(\$num * \$shift)) / \$shift); } ?> ```
-4
Florian
16 years ago
``` A function that simulates the sum operator. (http://en.wikipedia.org/wiki/Sum). Be careful with the expression because it may cause a security hole; note the single quotes to don't parse the "\$".<?php# @param    string    \$expr    expression to evaluate (for example (2*\$x)^2+1)# @param    string    \$var      dummy variable (for example "x")# @param    integer    \$start# @param    integer    \$end# @param    integer    \$stepfunction sum(\$expr,\$var,\$start,\$end,\$step = 1) {    \$expr = str_replace(';','',\$expr);    \$var = str_replace('\$','',\$var);    \$start = (int)\$start;    \$end = (int)\$end;    \$step = (int)\$step;    \$sum = 0;        for (\$i = \$start; \$i <= \$end; \$i = \$i + \$step) {        \$_expr = str_replace('\$'.\$var,\$i,\$expr);            \$_eval = '\$_result = '.\$_expr.'; return \$_result;';        \$_result = eval(\$_eval);        if(\$result === FALSE) return "SYNTAX ERROR : \$expr";        \$sum += \$_result;    }    return (int)\$sum;}?> ```
-4
AsherMaximum gmail
11 years ago
``` Here's a simple way way to convert a number to an ordinal number I created: \$i == the number to convert. Put this inside a for loop if you need to populate an array. <?php // change increment variable to ordinal number. \$n1 = \$i % 100; //first remove all but the last two digits \$n2 = (\$n1 < 20 ? \$1 : \$i % 10; //remove all but last digit unless the number is in the teens, which all should be 'th' //\$n is now used to determine the suffix. \$ord = (\$n2==1 ? \$i.'st' : ( (\$n2==2 ? \$i.'nd' : (\$n2==3 ? \$i.'rd' : \$i.'th') ) ) ) ?> ```
-5
capripot at gmail dot com
9 years ago
``` Another simpler function to check a number with the luhn algorithm : <?php function luhn(\$num){     if(!\$num)         return false;     \$num = array_reverse(str_split(\$num));     \$add = 0;     foreach(\$num as \$k => \$v){         if(\$k%2)             \$v = \$v*2;         \$add += (\$v >= 10 ? \$v - 9 : \$v);     }     return (\$add%10 == 0); } ?> Don't know if foreach and arrays operations are faster than while and substr, but I feel it clearer. ```
-5
edward at edwardsun dot com
15 years ago
``` well just a note.. maybe i'm a bit stupid.. but remember to use pow() rather than the "^" sign for exponents.. as it took me 5 minutes to figure out why it wasn't working. ```
-6
nazgul26 (at_sign) windfox dot net
19 years ago
``` This code will convert a decimal to it's fraction equivalent. The precision can be set by changing PRECISION. <?php define(PRECISION, .01); \$count=0; \$result=array(); decimalToFraction(\$_REQUEST['dec'],\$count,&\$result); \$count = count(\$result); \$simp_fract = simplifyFraction(\$result,\$count,1,\$result[\$count]); echo \$simpl_fract; // Start of functions /*    Converts a decimal to unsimplified fraction represented in an array */ function decimalToFraction(\$decimal,\$count,\$result) {     \$a = (1/\$decimal);     \$b = ( \$a - floor(\$a)  );     \$count++;     if (\$b > .01 && \$count <= 5) decimalToFraction(\$b,\$count,&\$result);     \$result[\$count] = floor(\$a); } /*     Simplifies a fraction in an array form that is returned from      decimalToFraction */ function simplifyFraction(\$fraction,\$count,\$top,\$bottom) {     \$next = \$fraction[\$count-1];     \$a = (\$bottom * \$next) + \$top;     \$top = \$bottom;     \$bottom = \$a;     \$count--;     if (\$count > 0) simplifyFraction(\$fraction,\$count,\$top,\$bottom);     else {         return "<font size=1>\$bottom/\$top</font>";     } } ?> ```
-6
bjcffnet at gmail dot com
16 years ago
``` thearbitcouncil at gmail dot com, you could just use array_sum():<?phpfunction average(\$arr){   if (!is_array(\$arr)) return false;   return array_sum(\$arr)/count(\$arr);}\$array = array(5, 10, 15);echo average(\$array); // 10?> ```
-7
peter-stangl at t-online dot de
16 years ago
``` I needed to approximate an integral because i was not able to calculate it, so i wrote this function. It approximates an integral with the composite Simpson's rule.More information on Simpson's rule: http://en.wikipedia.org/wiki/Simpson%27s_rule<?phpfunction simpsonf(\$x){// returns f(x) for integral approximation with composite Simpson's rule   return(pow((1+pow(\$x, (-4))), 0.5));}function simpsonsrule(\$a, \$b, \$n){// approximates integral_a_b f(x) dx with composite Simpson's rule with \$n intervals// \$n has to be an even number// f(x) is defined in "function simpsonf(\$x)"   if(\$n%2==0){      \$h=(\$b-\$a)/\$n;      \$S=simpsonf(\$a)+simpsonf(\$b);      \$i=1;      while(\$i <= (\$n-1)){         \$xi=\$a+\$h*\$i;         if(\$i%2==0){            \$S=\$S+2*simpsonf(\$xi);         }         else{            \$S=\$S+4*simpsonf(\$xi);         }         \$i++;      }      return(\$h/3*\$S);      }   else{      return('\$n has to be an even number');   }}?> ```
-6
tmpa at yahoo dot com
17 years ago
``` while joogat's one line function is short, it is probably better to calculate factorial iteratively instead of recursively. keep in mind if you want large factorials, you'll need to use some sort of arbitrary precision integer or perhaps the BCMath functions. then again, unless you're trying to do large numbers (170! is the highest that you can do that does not return infinity) you probably won't notice any time difference.<?phpfunction factorial(\$in) {    // 0! = 1! = 1    \$out = 1;    // Only if \$in is >= 2    for (\$i = 2; \$i <= \$in; \$i++) {        \$out *= \$i;    }    return \$out;}?> ```
-4
tembenite at gmail dot com
15 years ago
``` To add to what Cornelius had, I have written a function that will take an array of numbers and return the least common multiple of them:function lcm_arr(\$items){    //Input: An Array of numbers    //Output: The LCM of the numbers    while(2 <= count(\$items)){        array_push(\$items, lcm(array_shift(\$items), array_shift(\$items)));    }    return reset(\$items);}//His Code below with \$'s added for varsfunction gcd(\$n, \$m) {   \$n=abs(\$n); \$m=abs(\$m);   if (\$n==0 and \$m==0)       return 1; //avoid infinite recursion   if (\$n==\$m and \$n>=1)       return \$n;   return \$m<\$n?gcd(\$n-\$m,\$n):gcd(\$n,\$m-\$n);}function lcm(\$n, \$m) {   return \$m * (\$n/gcd(\$n,\$m));} ```
-4
jl85 at yahoo dot com
18 years ago
``` Here's yet another greatest common denominator (gcd) function, a reeeeally small one.function gcd(\$n,\$m){if(!\$m)return\$n;return gcd(\$m,\$n%\$m);}It works by recursion. Not really sure about it's speed, but it's really small! This won't work on floating point numbers accurately though. If you want a floating point one, you need to have at least PHP 4, and the code would befunction gcd(\$n,\$m){if(!\$m)return\$n;return gcd(\$m,fmod(\$n,\$m));} ```
-6
help at gjbdesign dot com
17 years ago
``` Occasionally a user must enter a number in a form. This function converts fractions to decimals and leaves decimals untouched. Of course, you may wish to round the final output, but that is not included here.<?php/*Some example values of \$q\$q = "2.5";\$q = "2 1/2";\$q = "5/2";*/function Deci_Con(\$q){//check for a space, signifying a whole number with a fraction    if(strstr(\$q, ' ')){        \$wa = strrev(\$q);        \$wb = strrev(strstr(\$wa, ' '));        \$whole = true;//this is a whole number    }//now check the fraction part    if(strstr(\$q, '/')){        if(\$whole==true){//if whole number, then remove the whole number and space from the calculations              \$q = strstr(\$q, ' ');        }\$b = str_replace("/","",strstr(\$q, '/'));//this is the divisor//isolate the numerator\$c = strrev(\$q);\$d = strstr(\$c, '/');\$e = strrev(\$d);\$a = str_replace("/","",\$e);//the pre-final numerator        if(\$whole==true){//add the whole number to the calculations            \$a = \$a+(\$wb*\$b);//new numerator is whole number multiplied by denominator plus original numerator            }\$q = \$a/\$b;//this is now your decimalreturn \$q;    }else{        return \$q;//not a fraction, just return the decimal    }}?> ```
-5
jl85 at yahoo dot com
19 years ago
``` Theres another faster way of doing even/odd number checking by using bitwise operators. Don't ask me how it works, I just found this out by experimenting with it (could the editor possibly explain?)if ((1&\$num)) { echo "\$num is odd";}if (!(1&\$num)) { echo "\$num is even";}How it works is (1&\$num) returns a 1 for odd numbers and returns 0 when it's an even number. ```
-6
jerry dot wilborn at fast dot net
19 years ago
``` Here is how to calculate standard deviation in PHP where \$samples is an array of incrementing numeric keys and the values are your samples:\$sample_count = count(\$samples);for (\$current_sample = 0; \$sample_count > \$current_sample; ++\$current_sample) \$sample_square[\$current_sample] = pow(\$samples[\$current_sample], 2);\$standard_deviation = sqrt(array_sum(\$sample_square) / \$sample_count - pow((array_sum(\$samples) / \$sample_count), 2)); ```
-5
Aiden880
7 years ago
``` Lowest Common Denominator:function lcd(\$num, \$start) {    while(\$num % \$start != 0) {        \$start++;    }    return \$start;} ```
-5
patience at worldonline dot nl
19 years ago
``` The example for Factorials given above is wrong. Here a correct version, so that you do not have to reinvent the wheel again... <?php function mathFact( \$s ) {   \$r = (int) \$s;   if ( \$r < 2 )     \$r = 1;   else {     for ( \$i = \$r-1; \$i > 1; \$i-- )       \$r = \$r * \$i;   }   return( \$r ); } ?> ```
-7
webkid%webkid.com
19 years ago
``` And the reason I needed a Factorial function is because I there were no nPr or nCr functions native to PHP, either.function n_pick_r(\$n,\$r){\$n=(int)\$n; \$r=(int)\$r;return (fact(\$n)/fact(\$n-\$r));}function n_choose_r(\$n,\$r){\$n=(int)\$n; \$r=(int)\$r;return (n_pick_r(\$n,\$r)/fact(\$r));}Hope that helps someone! ```
-6
moikboy (nospam!) moikboy (nospam!) hu
16 years ago
``` I think, this is the optimal code for calculating factorials:<?phpfunction fact(\$int){    if(\$int<2)return 1;    for(\$f=2;\$int-1>1;\$f*=\$int--);    return \$f;};?>And another one for calculating the \$int-th Fibonacci-number:<?phpfunction fib(\$int){    static \$fibTable=array();    return empty(\$fibTable[\$int])?\$fibTable[\$int] = \$int>1?fib(\$int-2)+fib(\$int-1):1:\$fibTable[\$int];};?> ```
-4
jordanolsommer at imap dot cc
18 years ago
``` The reason the bitwise AND ("&") operator works to determine whether a number is odd or even is because odd numbers expressed in binary always have the rightmost (2^0) bit = 1 and even numbers always have the 2^0 bit = 0. So if you do a " 1 & \$num", it will return zero if the number is even (since xxxxxxx0 [the even number in binary] and 00000001 [the 1]) don't share any bits, and will return 1 if the number is odd (xxxxxx1 and 000001).a clever way of doing things, but \$num % 2 would work as well i think :). ```
-6
marasek.SPAMLESS at telton.de
15 years ago
``` I could not resist to do a simpler version of the ordinal function:<?phpfunction ordinal(\$num){    \$num = (int)\$num;    \$digit = substr(\$num, -1, 1);    \$ord = "th";    switch(\$digit)    {        case 1: \$ord = "st"; break;        case 2: \$ord = "nd"; break;        case 3: \$ord = "rd"; break;    break;    }return \$num.\$ord;}?>One could replace the typecast with<?phpif(\$num===NULL or \$num===""){return NULL;}?>to get an empty result instead of "0th" in case \$num is empty too. ```
-6
monte at ohrt dot com
16 years ago
``` This is an efficient method of calculating the binomial coefficient C(n,k). This code was derived from Owant: Mastering Algorithms with Perl.<?php   // calculate binomial coefficient   function binomial_coeff(\$n, \$k) {      \$j = \$res = 1;      if(\$k < 0 || \$k > \$n)         return 0;      if((\$n - \$k) < \$k)         \$k = \$n - \$k;      while(\$j <= \$k) {         \$res *= \$n--;         \$res /= \$j++;      }      return \$res;   }?>If you compiled php with --enable-bcmath, you can get full integer values of extremely large numbers by replacing:\$res *= \$n--;\$res /= \$j++;with:\$res = bcmul(\$res, \$n--);\$res = bcdiv(\$res, \$j++); ```
-5
barry at megaspace dot com
15 years ago
``` Here's a least common denominator (lcd) function:\$array = array(3,4,6,8,18,2);        function lcd(\$array,\$x) {                        \$mod_sum = 0;                for(\$int=1;\$int < count(\$array);\$int++) {                            \$modulus[\$int] = (\$array*\$x) % (\$array[\$int]);            \$mod_sum = \$mod_sum + \$modulus[\$int];                    }                     if (!\$mod_sum) {            echo "LCD: ".(\$array*\$x)."\n";        }                    else {            lcd(\$array,\$x+1);        }            }lcd(\$array,1); ```
-6
fabien_mornand at yahoo dot fr
18 years ago
``` here is an algorithm to calculate gcd of a number. This is Euclid algorithm i was studying in Maths. I've converted it in php for the fun.<?php if(\$a && \$b)  { \$ax=\$a; \$bx=\$b;   \$r=fmod(\$a,\$b);  if(!\$r){\$rx=\$r;}   while(\$r){    \$rx=\$r;    \$a=\$b;    \$b=\$r;    \$r=fmod(\$a,\$b);    }   }echo 'PGCD ('.\$ax.' , '.\$bx.' ) = '.\$rx;?> ```
-5
ian at mp3 dot com
21 years ago
``` for those looking for a credit card verification function i wrote a simple LUHN Formula algorithm: <?php \$valid = 1; \$numOfDigits = 0 - strlen(\$ccNumber); \$i = -1; while (\$i>=\$numOfDigits){   if ((\$i % 2) == 0){     \$double = 2*(substr(\$ccNumber, \$i, 1));     \$total += substr(\$double,0,1);     if (strlen(\$double > 1)){       \$total += substr(\$double,1,1);     }   } else {     \$total += substr(\$ccNumber, \$i, 1);   }   \$i--; } if ((\$total % 10) != 0){   \$valid = 0; } ?> ```
-8
thearbitcouncil at gmail dot com
17 years ago
``` Two functions I didn't find elsewhere... one to compute mean of an array of numbers, and another to computer variance of a sample of numbers. Both take an array of numbers as arguments. Not much error checking, or optimization...(note: variance function uses the average function...)<?phpfunction average(\$arr){    if (!count(\$arr)) return 0;    \$sum = 0;    for (\$i = 0; \$i < count(\$arr); \$i++)    {        \$sum += \$arr[\$i];    }    return \$sum / count(\$arr);}function variance(\$arr){    if (!count(\$arr)) return 0;    \$mean = average(\$arr);    \$sos = 0;    // Sum of squares    for (\$i = 0; \$i < count(\$arr); \$i++)    {        \$sos += (\$arr[\$i] - \$mean) * (\$arr[\$i] - \$mean);    }    return \$sos / (count(\$arr)-1);  // denominator = n-1; i.e. estimating based on sample                                     // n-1 is also what MS Excel takes by default in the                                    // VAR function}echo variance(array(4,6,23,15,18)); // echoes 64.7...correct value :)?> ```
-10
``` Ajay Singh Deol is commonly known as Sunny Deol which is a famous Indian Television actor and a Politician as well. Want to know about the info then you can check it in your browser such as Sunny Deol age where you can get about his complete information. For your information, Sunny Deol is the person who won the Filmfare award for the best actor ``` 