PHP方法将回显/打印结果,但不会返回它们

PHP方法将回显/打印结果,但不会返回它们,php,Php,这个方法似乎总是返回false,即使我可以在返回语句之前打印结果,我总是得到false。有问题的方法 public static function getGroupOptions($pid=0, $ogid=0) { if($data = self::getOptionsData($pid, $ogid)) { $Options = array(); Load::Object('ProductOption');

这个方法似乎总是返回false,即使我可以在返回语句之前打印结果,我总是得到false。有问题的方法

    public static function getGroupOptions($pid=0, $ogid=0) {

        if($data = self::getOptionsData($pid, $ogid)) {
            $Options = array();
            Load::Object('ProductOption');
            foreach($data as $key => $rec) {
                $Option = new ProductOptionObject;
                $Option->Populate($rec);
                array_push($Options, $Option);

            }

            //echo "<pre>";print_r($Options);echo "</pre>";die;  
            return $Options;
        }
        return false;
    }
调试行始终打印“Boolean FALSE”


使用:PHP5.3.14/Apache2.2.8/CentOS 5.8

实际代码中一定有一些输入错误。你的代码似乎没问题。试着调试代码,你就会知道你错过了什么。

我会使用静态而不是自我例如:

php> class A {
 ...    public static function getOpt() {
 ...       return array(1,2,3);
 ...    }
 ...    public static function getGrpOpt() {
 ...       if (false != $opt = self::getOpt()) {
 ...          return $opt;
 ...       }
 ...       return false;
 ...    }
 ... }

php> var_export(A::getGrpOpt())
array (
  0 => 1,
  1 => 2,
  2 => 3,
)
但不管怎样,这都非常有效:

print("<pre>" . print_r($res, true) . "</pre>");
因此,我认为问题在于您没有向我们展示的getOptionsData函数

如果您展示如何让内部调试打印出来,它也会有所帮助,因为我确信它会按照指示返回$Options,它别无选择


使用var_dump或var_export可轻松查看调试时打印的假值。

如果要捕获打印的输出,请使用返回参数:

print(“.print\r($res,true)。”);

您的实际代码中是否有拼写错误?您发布的代码似乎没有问题。您一定是遗漏了什么。你的代码是okayno,我已经讨论过很多次了,我想我可能刚刚发现了一些东西,一些缓存数据附加了HuuUge堆栈跟踪,可能导致php内部错误并跳过了第一个return语句??PHP不会抛出任何错误,日志中也没有任何东西,有什么东西递归调用这个函数吗?你在某种循环中吗?我看不出你所发布的代码有什么问题,所以我只是想插一句。它不是递归的,而是从一个循环中调用的,因为它为每个ObjectGroupObject调用了它(本页上有3个),但目前我已经要求它在第一次调用后死亡。
php> class A {
 ...    public static function getOpt() {
 ...       return array(1,2,3);
 ...    }
 ...    public static function getGrpOpt() {
 ...       if (false != $opt = self::getOpt()) {
 ...          return $opt;
 ...       }
 ...       return false;
 ...    }
 ... }

php> var_export(A::getGrpOpt())
array (
  0 => 1,
  1 => 2,
  2 => 3,
)
print("<pre>" . print_r($res, true) . "</pre>");