【发布时间】:2018-09-27 08:28:09
【问题描述】:
我从php 5升级到7.2,本地没有问题(需要一些更改,但已经解决了)。
我的一个功能在生产服务器中不起作用。 代码如下所示:
$someBool = in_array($some, array("asd", "fgh", "etc"));
如果我对此进行 var_dump,结果为 UNKNOWN:0,但如果我在此下方进行 var_dump(在转储之前没有任何 if 站),则该函数正常工作,结束转储结果将为 bool (true) 或 bool (false)。
(我没有覆盖这个变量)
如果我再次注释 var_dump 行,该函数将无法正常工作。
有人知道什么会导致这种行为吗? 谢谢你的帮助。
在原函数中:
$needCmdText = in_array($fieldName,array(
'cmdpreid','cmdpostid','cmdskipid',
'cmdfixid','cmdexpid','cmdsysid'
));
$fieldName 总是来自客户端的“cmdexpid”。 (在我的测试用例中) 还有一个有趣的消息,一个简单的 echo 也解决了这个问题,但应该是在这个下。
【问题讨论】:
-
该问题缺少如何产生“结果”的代码。您是否希望我们在您不分享的情况下知道您的代码?我们不知道 UNKNOWN:0 可能来自什么。还说
var_dump()改变了你其他代码的行为是 99.9999% 错误 -
代码很简单,没有什么神奇之处。我简单地调用了 in_array,它不返回 bool。
-
它对我有用:3v4l.org/NhnQH [no $some] 3v4l.org/HCKoQ [with $some] 所以肯定有一些不同的东西。
-
如果我没有看到,我也不会相信,但我只是取消注释并评论 var_dump,这会使结果有所不同。如果在 var_dump 和 in_array 之间有更多行(如果),则 var_dump 结果 UNKNOWN:0,这是 in_array 的结果。由于 var 转储,某些行为会发生变化,这是肯定的。
-
那么您最终会展示您的代码有效和无效的代码吗? 如果我们不知道您写了什么,我们应该如何帮助您?