脚本执行

时间:2018-07-31 20:40:50

标签: php python

我正在PHP中执行Python脚本,效果很好。我在网页上得到了Python脚本的输出。但是问题是我在PHP中创建了一个变量,该变量的值与Python代码的结果相同,但是当我比较这两个变量时,它显示不相等。

Python:

if(results==[True]):
print("picture matched")

结果: picture matched

PHP:

$output = shell_exec("python check.py");
var_dump($output);
$out = "picture matched";
var_dump($out);
if($output == $out) {
    echo "match";
} else {
    echo "not";
}

结果: string (16) "picture matched " string (16) "picture matched " not

我不知道为什么显示not,它应该显示match,因为两者的类型,值和字符都相同。

2 个答案:

答案 0 :(得分:2)

python 3 vector<int> *NNLt; double *NNLtout; Vector *V; Vector *Fb; mwSize *sn; mwSize nsn; mwSize nf; double hs; double bw; double mw; mwSize ncols; mwSize i; double *NNLtoutt; ... createNNLtriangle(NNLt, V, Fb, sn, nsn, nf, hs, bw, mw); plhs[0] = mxCreateCellMatrix(nsn,50); ... for(i=0;i<nsn;i++){ // copy(NNLt[i].begin(),NNLt[i].end(),NNLtout[i*50;i*50+NNLt[i].size()]); // NNLtoutt=mxCreatStrucMatrix(1,50,1,fnom); copy(NNLt[i].begin(),NNLt[i].end(),NNLtoutt); mxSetCell(plhs[0],i,mxDuplicateArray(NNLtoutt)); } 函数默认在末尾添加换行符,您可能没有注意到。试试:

print()

等效于python 2 print("picture matched", end="") 的语句:print(带有结尾逗号)不会添加换行符,但会添加结尾空格。

答案 1 :(得分:0)

对字符串使用==的IMHO并非总是100%准确。尝试使用strcmp:

$output=shell_exec("python check.py");
     var_dump($output);
     $out="picture matched";
     var_dump($out);
     if(strcmp($output,$out) != 0)
     {
       echo "match";
     }
     else
        { echo "not";
     }

您还可以使用它来帮助确定问题。如果$ output小于$ out,则返回<0;如果$ output大于$ out,则返回> 0;如果相等,则返回0。

$output=shell_exec("python check.py");
     var_dump($output);
     $out="picture matched";
     var_dump($out);
     if(strcmp($output,$out) != 0)
     {
       echo "match";
     }
     else
        { echo "not";
          echo strcmp($output,$out);
     }