2016-05-04 2 views
0

У меня есть эта часть кодаГенерировать массивы динамические

$records = array(); 
$records["data"] = array(); 
    foreach ($rows as $row) {//select from DB 
     $records["data"][] =array();//XXXX 
       foreach($this->t_data['columns'] as $column) {//columns for table 
        $records['data'][][]=$row[$column['name']];//THIS need to add into XXXX array 
       } 
    } 
$records["draw"] = $sEcho; 
return json_encode($records); 

В попытке во многих отношениях, чтобы добавить данные в массив. этот код исходит из datatables.

Это wotking код, статический

foreach ($tickete as $row) { 
    $records["data"][] = array(
     '<input type="checkbox" name="idticket" value="' . $row['id'] . '">', 
     $row['name'], 
     $row['type'], 
     $row['state'] 
    ); 
} 

Формат:

{"data":[ 
["ID1","Name","Type","State"], 
["ID2","Name","Type","State"], 
["ID3","Name","Type","State"], 
["ID4","Name","Type","State"], 
["ID5","Name","Type","State"]],"draw":2,"recordsTotal":50,"recordsFiltered":50} 
+0

, какой формат массива вы хотите? –

+0

Я редактирую вопрос –

ответ

0

Несколько решений:

1) Временный массив, толкнул в конце:

foreach ($rows as $row) { 
    $subArray = array(); 
    foreach($this->t_data['columns'] as $column) { 
     $subArray[] = $row[$column['name']]; 
    } 
    $records["data"][] = $subArray; 
} 

2) Использование массива ind например:

foreach ($rows as $row) { 
    $records["data"][] = array(); 
    foreach($this->t_data['columns'] as $column) { 
     $records["data"][count($records["data"]) - 1][] = $row[$column['name']]; 
    } 
} 

3) Ссылка на вновь созданный массив с использованием индекса (полезно только тогда, когда вам нужно получить доступ к нему чаще):

foreach ($rows as $row) { 
    $records["data"][] = array(); 
    $subArray = &$records["data"][count($records["data"] - 1)]; 
    foreach($this->t_data['columns'] as $column) { 
     $subArray[] = $row[$column['name']]; 
    } 
} 
+0

Спасибо, вариант 1 работает отлично –

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