简体   繁体   中英

How to return multiple arrays from a function in codeigniter?

I am having this function in my controller.

function get_data($year, $month) {

        $query = $this->db->select('date,name,type')->from('books')->like('date', "$year-$month", 'after')->get();
        $data = array();
        $data2 = array();
        $data3 = array();


        foreach ($query->result() as $row) {
            if ($row->name == 'AA' && $row->type == 'AM') {
                $data[substr($row->date, 8, 2)] = '<div class="aa_am">' . $row->name . ' ' . $row->type . '</div>';
            } else if ($row->name == 'AA' && $row->type == 'PM') {
                $data2[substr($row->date, 8, 2)] = '<div class="aa_pm">' . $row->name . ' ' . $row->type . '</div>';
            } else if ($row->name == 'BB' && $row->type == 'AM') {
                $data3[substr($row->date, 8, 2)] = '<div class="bb_am">' . $row->name . ' ' . $row->type . '</div>';
            } 
        }
        return $data;
    }

I want to retrieve all data which is in $data,$data1 and $data2 at the same time. Is it possible to do it?? If anyone have an idea it would be a help for me.

From your code, I don't know what result you expect by combining all data which is in $data, $data1 and $data2.

but you can try array_merge(array1,array2,array3...) function if you want all data where key starting from 0 and increases by 1 for each value.

Or else you can create another array with all data values like,

return array("data" => $data, "data1" => $data1, "data2" => $data2)

by this way you can achieve what you want.

You can do it in following way,

function get_data($year, $month) {

    $query = $this->db->select('date,name,type')->from('books')->like('date', "$year-$month", 'after')->get();
    $data = array();
    $data1 = array();
    $data2 = array();


    foreach ($query->result() as $row) {
        if ($row->name == 'AA' && $row->type == 'AM') {
            $data[substr($row->date, 8, 2)] = '<div class="aa_am">' . $row->name . ' ' . $row->type . '</div>';
        } else if ($row->name == 'AA' && $row->type == 'PM') {
            $data1[substr($row->date, 8, 2)] = '<div class="aa_pm">' . $row->name . ' ' . $row->type . '</div>';
        } else if ($row->name == 'BB' && $row->type == 'AM') {
            $data2[substr($row->date, 8, 2)] = '<div class="bb_am">' . $row->name . ' ' . $row->type . '</div>';
        } 
    }
$return['data']=$data;
$return['data1']=$data1;
$return['data2']=$data2;
    return $data;
}

you can acces in view as varible,

$data['index'], $data1['index'], $data2['index']

if you want to merge them then,

array_merge($data,$data1,$data2);

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM