Php 两个文件,完全相同的代码,不同的输出?

Php 两个文件,完全相同的代码,不同的输出?,php,heredoc,bcmath,Php,Heredoc,Bcmath,这是我做(PHP)程序员以来发生的最奇怪的事情 我有两个文件,其中包含以下返回不同输出的代码(proj.euler stuff) <?php $numbers =<<<eot 2,3 5,2 9,3 4,9 6,3 10,5 eot; $numbers = explode("\n",$numbers); $max = 0; foreach($numbers as $k => $n){ list($base,$expo) = explode(',',$n);

这是我做(PHP)程序员以来发生的最奇怪的事情

我有两个文件,其中包含以下返回不同输出的代码(proj.euler stuff)

<?php
$numbers =<<<eot
2,3
5,2
9,3
4,9
6,3
10,5
eot;
$numbers = explode("\n",$numbers);
$max = 0;
foreach($numbers as $k => $n){
    list($base,$expo) = explode(',',$n);
    $theLog = log($base,10);
    $result = bcmul($theLog,$expo,10);

    if(bccomp($result,$max,10) == 1){
        echo '<br/>max so far is ' . $result . ' for base ' . $base . '[log:'.$theLog.'] and exponent ' . $expo ;
        $max = $result;
    }
}
echo '<pre>';
print_r($numbers);
echo '</pre>';
echo $max;
FILE2,euler2.php//伪输出:

有人能想出发生这种情况的正当理由吗

我已经对它进行了测试,我可以在euler2.php中看出它是假的,
$result=bcmul($theLog,$expo,10)
不喜欢将
$theLog
作为浮点值,因此
bcmul(0,$expo)=0
<但是,code>$theLog保留正确的值

为什么bc函数的行为会从一个文件更改为另一个文件


注意:在任何文件中都没有设置
bcscale
,如果我将其设置为
bcscale(10)结果完全相同。

文件中有不同的EOL字符。我可以用Windows下线(
\r\n
)重新设置您的错误,并用Unix下线(
\n
)纠正您的行为。

您的文件中有不同的下线字符。我可以用Windows下线(
\r\n
)重新纠正您的错误,用Unix下线(
\n
)纠正您的行为。

有时,当文件看起来相同时,它们可能有不同的编码或行尾

但我不能说为什么这会影响你的结果

试着扩散(如使用)


使用,您可以通过“格式”菜单轻松编辑编码和/或行尾。

有时,当文件看起来相同时,它们可以具有不同的编码或行尾

但我不能说为什么这会影响你的结果

试着扩散(如使用)


使用,您可以通过“格式”菜单轻松编辑编码和/或行尾。

如果将值指定为数组而不是文本块,是否会发生任何更改?您真的确定这两个文件相同吗?你有区别吗?如果是:它们是否在同一个系统上运行?@Pekka:了解这个问题后,我可以告诉你,使用数组而不是herdoc是可行的,但是在实际情况中,有数百个值,这不是一个选项。谢谢-------------------@Jens:两个文件都在同一个系统上运行。我没有做任何区别。。。如果我找到了,我会找到问题的。我的错。。。但考虑到当时的情况,我还差很远。。。谢谢如果将值指定为数组而不是文本块,是否会发生任何更改?是否确实确定这两个文件相同?你有区别吗?如果是:它们是否在同一个系统上运行?@Pekka:了解这个问题后,我可以告诉你,使用数组而不是herdoc是可行的,但是在实际情况中,有数百个值,这不是一个选项。谢谢-------------------@Jens:两个文件都在同一个系统上运行。我没有做任何区别。。。如果我找到了,我会找到问题的。我的错。。。但考虑到当时的情况,我还差很远。。。谢谢这正是问题所在。。。一个文件有
\r
,而另一个文件有
\n
。。。我不知道为什么,文件和代码使用的同一个编辑器被复制粘贴到另一个…这正是问题所在。。。一个文件有
\r
,而另一个文件有
\n
。。。但我不知道为什么,用于文件和代码的同一个编辑器从一个工作文件复制粘贴到另一个工作文件…我使用记事本++并将代码从一个文件复制/粘贴到另一个文件,但这就是问题所在。。。EOL是不同的,因此
explode(“\n”)
将在第一个文件中工作,而
explode(“\r”)
将在第二个文件中工作。。。谢谢:)我在使用记事本++并将代码从一个文件复制/粘贴到另一个文件,但这就是问题所在。。。EOL是不同的,因此
explode(“\n”)
将在第一个文件中工作,而
explode(“\r”)
将在第二个文件中工作。。。谢谢:)
max so far is 0.9030899869 for base 2[log:0.30102999566398] and exponent 3
max so far is 1.3979400086 for base 5[log:0.69897000433602] and exponent 2
max so far is 2.8627275283 for base 9[log:0.95424250943932] and exponent 3
max so far is 5.4185399219 for base 4[log:0.60205999132796] and exponent 9

5.4185399219
max so far is 5 for base 10[log:1] and exponent 5

5