PHP.mk документација

gmp_init

Почист и полокален преглед на PHP референцата, со задржана структура од PHP.net и подобра читливост за примери, секции и белешки.

function.gmp-init.php PHP.net прокси Преводот се освежува
Оригинал на PHP.net
Патека function.gmp-init.php Локална патека за оваа страница.
Извор php.net/manual/en Оригиналниот HTML се реупотребува и локално се стилизира.
Режим Прокси + превод во позадина Кодовите, табелите и белешките остануваат читливи во истиот тек.
gmp_init

Референца за `function.gmp-init.php` со подобрена типографија и навигација.

function.gmp-init.php

gmp_init

(PHP 4 >= 4.0.4, PHP 5, PHP 7, PHP 8)

gmp_initКреирај GMP број

= NULL

gmp_init(int|string $num, int $base = 0): GMP

Креира GMP број од цел број или стринг.

Параметри

num
Цел број или стринг. Репрезентацијата на стринг може да биде децимална, хексадецимална, октална или бинарна.
base
Основата што треба да се користи за конвертирање на string representation. Експлицитна основа може да биде помеѓу 2 and 62. За основи до 36, случајот се игнорира; големите и малите букви имаат иста вредност. За основи 37 to 62, големите букви ги претставуваат вредностите 10 to 35 а малите букви ги претставуваат вредностите 36 to 61. Враќа base is 0 тогаш вистинската основа се одредува од водечките карактери на num. Ако првите два карактери се 0x or 0X, стринг се толкува како хексадецимален цел број. Ако првите два карактери се 0b or 0B, стринг се толкува како бинарен цел број. Ако првите два карактери се 0o or 0o, стринг се толкува како октален цел број. Покрај тоа, ако првиот карактер е 0 , стринг исто така се толкува како октален цел број. Во сите други случаи, стринг се толкува како децимален цел број.

Вратени вредности

А GMP object.

Дневник на промени

Верзија = NULL
8.1.0 Поддршка за експлицитни октални префикси 0o and 0o е додадена за num стрингови. Толлкување на такви префикси кога base is 0 исто така е додадено.

Примери

Пример #1 Креирање на GMP број

<?php
$a
= gmp_init(123456);
$b = gmp_init("0xFFFFDEBACDFEDF7200");
?>

Белешки

Забелешка:

Не е потребно да се повика оваа функција за да се користат цели броеви или низи наместо GMP броеви во GMP функции (како на пример со gmp_add()). Аргументите на функцијата автоматски се претвораат во GMP броеви, ако таква конверзија е можна и потребна, користејќи исти правила како gmp_init().

Види Исто така

Белешки од корисници Управување со PDO конекции

php на richardneill точка org
19 години пред
Here's a way to parse a decimal (eg 3.25) into an integer and exponent:

<?
if (preg_match("/^[0-9]+\.[0-9]+$/",$input)){ 
     //Input is a base-10 decimal. Multiply as necessary to remove the decimal
     //point. Convert that to a gmp_resource, then decrement the exponent 
     //to compensate.

     $pieces=explode(".", $input);     //Split at the d.p.
     $input="$pieces[0]$pieces[1]";  //Remove the decimal point.

     $input=ltrim($input,'0');    
     //Remove any leading zeros, or gmp_init will parse the number as octal.

     if ($input==''){    //Deal with "0.0" which would otherwise be ''.
          $input=0;
      }
      $integer=gmp_init($input);   
      $ns_exponent=-strlen($pieces[1]);  
     //exponent = (-)  the number of characters after the decimal point.
}
?>
GMP::__construct()
пред 14 години
Unless the base is 16, gpm_init will fail if the string begins with "0b". 

> php -r '$v = gmp_init("b83", 17); print("$v\n");'

Resource id #4

> php -r '$v = gmp_init("0b83", 17); print("$v\n");'

[nothing prints]

In may case, where I am explicitly specifying the base, the solution is to apply ltrim first:

> php -r '$v = gmp_init(ltrim("0b83", "0"), 17); print("$v\n");'

Resource id #4
clcollie на mindspring точка com
пред 14 години
I discovered that the gmp functions use [0-9a-f] up to base 16, but [0-9A-Za-z] (i.e. upper case first) from bases 17 to 62. This differs from most of the base-62 implementations I've found that tend to use lower case first.
RPaseur at NationalPres dot org
3 години пред
Missing from the documentation: gmp_init() return false in case it failed to parse $num

<?php
var_dump(gmp_init(""));
// returns "bool(false)" and not a GMP object as hinted by the documentation, it also triggers a Warning "PHP Warning:  gmp_init(): Unable to convert variable to GMP - string is not an integer in php shell code on line 1"

?>
karl dot debisschop at pearson dot com
19 години пред
gmp_* functions don't accept strings with a leading '+':
<?php
echo gmp_strval(gmp_init('+42'));      #0
echo gmp_strval(gmp_add('42', '+42')); #42
echo bcadd('+42', '+42');              #84
?>
php на richardneill точка org
19 години пред
Note: Leading zeros will make gmp_init parse this as octal.
Thus gmp_init(010) becomes 8.  

$a=010;              //8
$b="010" + 0;     //10
$c=gmp_strval(gmp_init(010));    //8
$d=gmp_strval(gmp_init("010")); //8

This behaviour is inconsistent: either $d should equal $b, or
$b should equal $a.
thomas точка hebinck на digionline точка de
20 години пред
If you call a gmp_* function directly with an interger as parameter, this integer MUST NOT be 0:

for($i=-1;$i<=1;$i++) {  echo gmp_strval(gmp_add(2,gmp_mul(1,$i))) . ' ';  }

The result is 1 0 3 (wrong)

In this case you have to use gmp_init():

for($i=-1;$i<=1;$i++) {  echo gmp_strval(gmp_add(2,gmp_mul(1,gmp_init($i)))) . ' ';  }

The result is 1 2 3 (right)

Happy number crunching! :-)
На оваа страница

Автоматски outline од активната документација.

Насловите ќе се појават тука по вчитување.

Попрегледно читање

Примерите, changelog табелите и user notes се визуелно издвоени за да не се губат во долгата содржина.

Брз совет Користи го outline-от Скокни директно на главните секции од активната страница.
Извор Оригиналниот линк останува достапен Кога ти треба целосен upstream context, отвори го PHP.net во нов tab.