2015-11-02 81 views
0

我想在循环内创建一个类的对象,但我无法弄清楚我在做什么错误。 这是我的选择功能。在for循环中创建一个对象

public function admin_select_all ($table, $rows = '*', $where = null, $order = null) 
{ 
    if(empty($table)) 
    { 
    return false; 
    } 

    $q = 'SELECT '.$rows.' FROM '.$table; 
    if($where != null) 
     $q .= ' WHERE '.$where; 
    if($order != null) 
     $q .= ' ORDER BY '.$order; 

    if($this->admin_tableExists($table)) 
    { 
    $stmt = $this->admin_connection->prepare($q); 
    $stmt->execute(); 
    $results = $stmt->fetchAll(); 
    if((!$results) or (empty($results))) { 
     return false; 
    } 
    return $results; 
    } 


} 

这是类admin_element的构造

public function __construct($itemId) 
{ 
    global $db_operate; 
    $info = $db_operate->admin_select_all ("my_table" ,"id=".$itemId); 
    $this->id = $info[0]['id']; 
    $this->title = $info[0]['title']; 
    $this->seoUrl = $info[0]['seo_url']; 
    $this->parentId = $info[0]['parent_id']; 
    $this->isMenuItem = $info[0]['menu_item']; 
    $this->order = $info[0]['menu_order']; 
    $this->htmlId = $info[0]['anchor_unique_html_id']; 
} 

//这里面admin_element的功能,我想,当我创建为循环

public static function getRootItems() 
{ 
    global $db_operate; 

    $parents = $db_operate->admin_select_all ("my_table"); 
    $listOfItems = array(); 
    for($i=0;$i<count($parents);$i++) 
    { 
     $listOfItems[$i] = new admin_element($parents[$i]['id']); 
    } 
    //var_dump($listOfItems); 
    return $listOfItems; 
    } 
} 

内创建一个对象现在一个对象与此然后我在构造函数中获取错误未定义的ID,当我var_dump数组,然后我得到的错误等于总长度$父,这是我返回的数组。我不知道我在做什么错。我也尝试与foreach,但仍然没有成功。

//用foreach我尝试,但不能创建和对象

foreach($parents as $row) { 
     $listOfItems[] = array(

     'id' => $row['id'] 


     ); 

    } 

这里的时候,我的var_dump的$ LISTOFITEMS数组,那么它的工作很好,但是当我尝试实例化对象那么它也失败,请一些帮助。如果在我道歉之前询问这个问题。

+0

'$ Q = 'WHERE' $哪里;'难道你不知道[小诱杀删除表( https://xkcd.com/327/)? – 2015-11-02 20:51:33

+0

我知道检查函数参数的$ where是从那里来的 –

+0

你在'$ info = $ db-> select(“my_table”,id =“。$”)中有'id =“。$ itemId'的语法错误itemId);' – Sean

回答

2

尝试更换此:

$listOfItems = array(); 
for($i=0;$i<count($parents);$i++) 
{ 
    $listOfItems[$i] = new itrom_element($parents[$i]['id']); 
} 

有了这个:。

foreach($parents as $parent) 
    $listOfItems[]= new itrom_element($parent['id']); 
+1

他没有提及,有一个语法错误,所以它propably编辑问题 – Daimos

+0

没有这不是问题,而粘贴我的问题,我在这里改变一些表名等,所以双引号删除错误。没关系,我已经编辑它,你可以现在检查它 –

+0

主要问题是我如何创建一个对象的类内部for或foreach循环,我正在做的是它worng或irihgt..some建议 –