Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/279.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 关于大数的for循环_Php_For Loop_Numbers - Fatal编程技术网

Php 关于大数的for循环

Php 关于大数的for循环,php,for-loop,numbers,Php,For Loop,Numbers,PHP 但这不起作用,并且表示错误超过了60秒的最大执行时间,而010100101002084和010100101002087之间的差异仅为3 为什么循环做无限 请帮助我脚本执行这么长时间的原因可能是循环中的查询。您可以尝试将“限制1”添加到查询中,使其仅处理一行,或将1更改为需要处理的行数。 如果你仍然想让你的脚本能够执行更长的时间,这里有更多关于它的信息。默认情况下,PHP会在60秒后终止脚本,以防止脚本挂起。php.ini中有一个值定义了php脚本可以运行的最长时间,它被称为max\u e

PHP

但这不起作用,并且表示错误
超过了60秒的最大执行时间
,而
010100101002084
010100101002087
之间的差异仅为3

为什么循环做无限


请帮助我

脚本执行这么长时间的原因可能是循环中的查询。您可以尝试将“限制1”添加到查询中,使其仅处理一行,或将1更改为需要处理的行数。 如果你仍然想让你的脚本能够执行更长的时间,这里有更多关于它的信息。默认情况下,PHP会在60秒后终止脚本,以防止脚本挂起。php.ini中有一个值定义了php脚本可以运行的最长时间,它被称为
max\u execution\u time
。您还可以通过
运行set\u time\u limit()
函数()来更改特定脚本的此值。

更改

$_POST['SCode']='010100100101002084';
$_POST['ECode']='010100100101002087';
for($p=$SCode;$p试试这个

for($p=0; $p < ($ECode - $SCode - 1); $p++)
for($p=0;$pquery)(“从Mashaghel中选择代码
其中Code=“.bcadd($SCode,$p)。”;
如果(!isset($Mashaghel[0][“Code”])| |为空($Mashaghel[0][“Code”]))
{
$errorCode.=bcadd($SCode,$p)。“،”;
}
}

将for的限制拆分为两个数字。例如,假设for循环的限制数字为1000,将其拆分为100,10使2个for循环嵌套

对于一些不可分割的数字,你可以一个接一个地做一些for循环,例如,假设你的数字是11 执行5+6,就像有2个for循环在循环中以精确的代码彼此紧跟运行一样。 您还可以测试while循环


毕竟,我不认为这是一种解决方案,它只是一种可以暂时解决问题的方法。

不应该是
$Mashaghel
$dbResult
?您意识到
010100101002084
这样的值太大,无法表示为32位有符号整数(假设您正在运行32位PHP);此外,在将前导零投射到numbers@MarkBaker对于整数太大的数字,它不会切换到浮点吗?为什么不直接使用
WHERE code在$SCode和$ECode之间进行循环并遍历结果呢?是的,它会切换,但是你可能会进入浮点不准确的领域为什么会这样ple SQL查询需要一分钟以上?请参阅我对@stony答案的评论。编辑了我的答案。可能查询只需要处理一行。echo(string)$p+$SCode return
1.0100101002E+16
how get correct format mean 010100100101002086它不应该工作。$ECode-$SCode将产生4,但它应该是3检查更多。差异是3,但它不产生3。它产生4@ShaifulIslam权限,
$p+$SCode
返回错误的值,此值始终返回1.0100101002e+16
 for($p=$SCode;$p<$ECode;$p++)
for($p=0; $p < ($ECode - $SCode - 1); $p++)
for($p=0;$p<bcsub($ECode,$SCode);$p++)
    {
        $dbResult= $dbHandle->query("SELECT Code FROM Mashaghel
Where Code=" . bcadd($SCode,$p) . "");
        if(!isset($Mashaghel[0]["Code"]) || empty($Mashaghel[0]["Code"]))
        {
            $errorCode.=bcadd($SCode,$p)."،";
        }
    }