PHP中的函数在循环内和循环外使用相同的参数返回不同的结果

时间:2019-03-22 19:33:28

标签: php

我有一个嵌套循环,其中外部循环从数组中获取一个项目,然后内部循环在不同数组的每个项目上运行一个函数。问题在于,在这些循环中,函数会为两个参数返回不同的值,但是如果我只是通过将其打印到屏幕上来复制这些值,然后在文件上单独复制,则会返回不同的结果。

我尝试打印循环的每个迭代,并在字符串中回显函数调用,并以参数作为要打印的变量,然后按如下所示运行函数:

echo "str_accur($dbBookTitle[$i], {$bookDataInfo[$j][0]}, false): ";
echo str_accur($dbBookTitle[$i], $bookDataInfo[$j][0], false);

在循环内部,它显示了不同的结果:

  

str_accur(网络物理系统,ASIPDes的ApplicationAnalysisTools,false):21

您会看到21是该函数的结果,然后我将复制该函数并像这样单独尝试

echo str_accur("Cyber-Physical Systems", "ApplicationAnalysisToolsforASIPDes", false);

使用相同的参数将返回9,这是我期望的,但是为什么在循环中它显示21却超出了我的范围。

这是循环:

for($i = 1;$i < $dbDataLen;$i++){
    echo "from database index ({$i}): " . $dbBookTitle[$i];
    for($j = 0;$j < $bdiL;$j++){
        if($bookDataInfo[$j][0] == "False"){
            $class = 'w3-red';
        }else{
            $class = 'w3-green';
        }
        echo "<p class='$class'>bookDataInfo index ($j) : {$bookDataInfo[$j][0]}</p>";
        echo "str_accur($dbBookTitle[$i], {$bookDataInfo[$j][0]}, false): ";
        echo str_accur($dbBookTitle[$i], $bookDataInfo[$j][0], false);
        echo "<hr>";
    }
}

str_accur的实际数据和源代码很大,因此我不知道是否应该在此处显示它,但为了以防万一,我将其放在了GitHub上。 https://github.com/siyaddigital/phpFuncProblem

1 个答案:

答案 0 :(得分:0)

结果是空白导致功能输出大量改变,我需要修剪参数,并且浏览器在打印之前默认已经修剪了值:

str_accur(trim($trgStr), trim($mtchTo), false);