显然,我的IF声明存在问题。
在symfony2控制器中,我有以下PHP:
57 foreach($all as $t) {
58 if ( ($end == null) || ($t->getDate()->format('Y-m-d') <= $end->format("Y-m-d")) ) {
59 if ( ($start == null) || ($t->getDate()->format('Y-m-d') >= $start->format("Y-m-d")) ) {
60 $subset[] = $t;
61 }
62 }
63 }
我收到此错误消息:
FatalErrorException: Error: Call to undefined function App\Bundle\Controller\ () in
www/App/src/App/Bundle/Controller/TransactionController.php line 59
如果我像这样评论第二个IF语句,它运行没有错误。
foreach($all as $t) {
if ( ($end == null) || ($t->getDate()->format('Y-m-d') <= $end->format("Y-m-d")) ) {
/*
if ( ($start == null) || ($t->getDate()->format('Y-m-d') >= $start->format("Y-m-d")) ) {
$subset[] = $t;
}
*/
}
}
所以在我的if语句中某处尝试运行sym2控制器?我迷路了...
$start
和$end
都是有效的DateTime
个对象,$date
个对象上的每个$t
都是。
如果我在他们打印的第二个if条件之前var_dump变量:
开始: object(DateTime)#1149(3){[“date”] =&gt; string(19)“2014-12-20 16:39:06”[“timezone_type”] =&gt; int(3)[“timezone”] =&gt; string(13)“Europe / Berlin”}
端: object(DateTime)#1150(3){[“date”] =&gt; string(19)“2015-01-19 16:39:06”[“timezone_type”] =&gt; int(3)[“timezone”] =&gt; string(13)“Europe / Berlin”}
叔&GT; GETDATE(): object(DateTime)#1046(3){[“date”] =&gt; string(19)“2012-12-11 00:00:00”[“timezone_type”] =&gt; int(3)[“timezone”] =&gt; string(13)“Europe / Berlin”}
答案 0 :(得分:0)
所以我不知道这是否是symfony2特有的,但如果我将IF条件分成两个不同的部分,从而废除了OR操作数||它实际上工作正常。
令人费解的是,第一个IF语句没有问题(它有一个几乎同意的条件)。
if ( $start == null ) {
$subset[] = $t;
}
elseif ( $t->getDate()->format('Y-m-d') >= $start->format("Y-m-d") ) {
$subset[] = $t;
}
答案 1 :(得分:0)
错误本身看起来很可疑,命名空间和括号之间有空格:
Call to undefined function App\Bundle\Controller\ ()
通常你会看到类似的东西:
Call to undefined function App\Bundle\Controller\foo_function()
无论发生什么事情,PHP都会看到&#34;功能&#34;用&#34;空白&#34;名称。我之前遇到过类似奇怪的情况,当我输入非常快并碰巧在插入文本时按下控制字符时。它通常发生在空格字符周围,因为在我的键盘上,控制字符位于空格键旁边。
重复它几乎是不可能的。最好的办法就是删除该行,然后再慢慢重新输入。
如果您一心想要诊断它,那么在GNU / Linux上,您可以将猫带到兽医那里,并且#34;
$ cat file.php
<?php if (1 == 1) echo 'hi';
$ cat -vet file.php
<?php if (1 == ^@1) echo 'hi';
我使用我的编辑器在if语句中插入一个空字节,它在正常检查中不会显示,但在给予&#34;兽医&#34;时显示。