1

即使我可以在 return 语句之前打印结果,这种方法似乎总是返回 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;
    }

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

4

3 回答 3

0

我会使用静态而不是自我前:

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 可以在调试时轻松查看打印的错误值。

于 2012-10-12T17:37:26.920 回答
0

如果您想捕获 print_r 的输出,请使用返回参数:

print("<pre>" . print_r($res, true) . "</pre>");
于 2012-10-13T04:24:25.047 回答
0

您的实际代码中一定有一些错字。你的代码似乎没问题。尝试调试代码,你就会知道你错过了哪里。

于 2012-10-12T11:34:19.290 回答