生成数组动态

I have this part of code

$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);

In try in many ways to add data into array. this code is from datatables.

This is wotking code, static

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

Format:

{"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}

Multiple solutions:

1) Temporary array, pushed at the end:

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

2) Using array index:

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

3) Reference to newly created array using index (useful only when you need to access it more often):

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