我有点恼火,为什么第二个代码抛出异常而第一个代码却没有。 self :: ID_FALLBACK是1, 部分中有2个或更多行,ID为1,2 ......;全部使用Sectiongroup_id = 1
Sectiongroup中有一行ID为
这没有任何问题:
public static function getSections(){
// select groups with sections
foreach(ORM::factory('Sectiongroup')->find_all() as $grp){
$s = $grp->sections->where('id', '>', self::ID_FALLBACK)->find_all()->as_array('id', 'name');
count($s) && $sections[$grp->name] = $s;
}
return $sections;
}
下一次抛出:
第Cannot use object of type Model_Sectiongroup as array
行中的count($s) && $section..
public static function getSections(){
// select groups with sections
$sections = ORM::factory('Sectiongroup');
foreach($sections->find_all() as $grp){
$s = $grp->sections->where('id', '>', self::ID_FALLBACK)->find_all()->as_array('id', 'name');
count($s) && $sections[$grp->name] = $s;
}
return $sections;
}
与Sectiongroup中的2行相同的错误现在应该是一个数组:
public static function getSections(){
// select userdefined groups with sections
$sections = ORM::factory('Sectiongroup');
foreach($sections->find_all()->as_array() as $grp){
$s = $grp->sections->where('id', '>', self::ID_FALLBACK)->find_all()->as_array('id', 'name');
count($s) && $sections[$grp->name] = $s;
}
return $sections;
}
对于一个奇怪的行为是什么?
答案 0 :(得分:1)
在您的第一个(工作)示例中,您从未明确定义$sections
数组,当您第一次编写$sections[$grp->name] = $s
时,PHP会创建$sections
数组对你而言。
在最后两个示例中,您明确地将$sections
声明为ORM::factory()
的返回值,更具体地说,是ORM
的对象子类,您不能使用该子类的数组下标({ {1}})符号。