2015-11-02 3 views
0

Я хочу создать объект класса внутри цикла, но я не могу понять, что я делаю неправильно. Это моя функция выбора.Создайте объект внутри цикла

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

Теперь, когда я создаю объект с этим, тогда я получаю ошибку undefined id в конструкторе, и когда я var_dump массив, тогда я получаю ошибку равной полному размеру $ parent, который является моим возвращенным массивом. Я не знаю, что я делаю неправильно. Я также пробовал его с помощью foreach, но до сих пор не добился успеха.

// С Еогеаспом я попробовать, но не в состоянии создать и объект

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

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


     ); 

    } 

Вот когда я var_dump массива $ LISTOFITEMS, то он работает хорошо, но когда я пытаюсь создать экземпляр объекта, то он также не пожалуйста Некоторая помощь. Если этот вопрос задан, прежде чем я приношу свои извинения.

+0

'$ д = 'WHERE' $, где,' Вы не знаете, [Маленький Booby Drop Table] (https://xkcd.com/327/)? –

+0

Я знаю, что проверить параметр функции $ where is from there –

+0

У вас есть синтаксическая ошибка с 'id =". $ ItemId' в '$ info = $ db-> select (" my_table ", id =". $ 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

он не упоминал, что есть синтаксическая ошибка, поэтому его проблема с возможностью редактирования – Daimos

+0

Нет, это не проблема, при вставке моего вопроса здесь я менял имена таблиц и т. Д., Поэтому двойная цитата удаляется ошибочно. Это нормально, я отредактировал его, вы можете проверить его сейчас. –

+0

. Главный вопрос: как я могу создать объект класса внутри цикла for или foreach, и то, что я делаю, это worng или irihgt ... некоторое предложение –

Смежные вопросы