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

时间:2012-10-12 10:29:23

标签: php

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

    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;
    }

print_r使用正确的数据转储ProductOptionObject的数组没有问题。

这是呼叫线......

            $Options = ProductOptionFactory::getGroupOptions($this->pId, $this->getBean('ogId'));
            //echo gettype($Options); echo $Options === false ? "FALSE" : "NOT FALSE"; die;

调试行总是打印'Boolean FALSE'。

使用:PHP 5.3.14 / Apache2 2.2.8 / CentOS 5.8

3 个答案:

答案 0 :(得分:0)

您的实际代码中必定存在一些拼写错误。你的代码似乎没问题。尝试调试代码,然后了解错过的位置。

答案 1 :(得分:0)

我会使用静态代替 self ex:

self::getOptionsData($pid, $ogid);

/** rather use */ 

static:getOptionsData($pid, $ogid);

但无论如何,这都完美无缺:

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,
)

所以我认为问题在于你没有向我们展示的getOptionsData函数。

如果您展示如何设置内部调试进行打印,这也会有所帮助,因为我确信它会按照指示返回$ Options,它没有其他选择。

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

答案 2 :(得分:0)

如果要捕获print_r的输出,请使用return参数:

print("<pre>" . print_r($res, true) . "</pre>");