这个方法似乎总是返回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
答案 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>");