我正在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
,因为两者的类型,值和字符都相同。
答案 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);
}