如何根据php中数组中存在的值对在多列中插入数组数据

array(1) { 
    [0]=> array(7) { 
        ["ranking_course_id"]=> string(1) "2" 
        ["ranking_college_id"]=> string(2) "20" 
        ["ranking_year"]=> string(4) "2017" 
        ["ranking_agency"]=> array(3) { 
            [0]=> string(1) "1" 
            [1]=> string(1) "2" 
            [2]=> string(1) "3" 
        } 
        ["ranking_value"]=> array(3) { 
            [0]=> string(2) "10" 
            [1]=> string(2) "20" 
            [2]=> string(2) "30" 
        } 
        ["ranking_salary"]=> string(9) "9.20 Lacs" 
        ["ranking_fees"]=> string(6) "354500" 
    } 
}  

What I want to insert is the following.

course_id | college_id | ranking_agency | ranking | value | salary fees
2            20               1              10      9.20      354500
2            20               2              20      9.20      354500
2            20               3              30      9.20      354500

Please help me out.

Try this workout

$oldarray = array(array("ranking_course_id" => "2", 
        "ranking_college_id"=> "20", 
        "ranking_year"=> "2017", 
        "ranking_agency"=> array("1","2","3"), 
        "ranking_value"=> array("10","20","30"), 
        "ranking_salary"=> "9.20 Lacs", 
        "ranking_fees"=> "354500"));

for($i=0; $i<count($oldarray[0]['ranking_agency']); $i++)
{
    $newarray[] = $oldarray[0];
    $newarray[$i]['ranking_agency'] = $oldarray[0]['ranking_agency'][$i];
    $newarray[$i]['ranking_value'] = $oldarray[0]['ranking_value'][$i];
}


echo "<pre>"; print_r($newarray);

echo "<pre>"; print_r($oldarray);

output:

newarray

Array
(
    [0] => Array
        (
            [ranking_course_id] => 2
            [ranking_college_id] => 20
            [ranking_year] => 2017
            [ranking_agency] => 1
            [ranking_value] => 10
            [ranking_salary] => 9.20 Lacs
            [ranking_fees] => 354500
        )

    [1] => Array
        (
            [ranking_course_id] => 2
            [ranking_college_id] => 20
            [ranking_year] => 2017
            [ranking_agency] => 2
            [ranking_value] => 20
            [ranking_salary] => 9.20 Lacs
            [ranking_fees] => 354500
        )

    [2] => Array
        (
            [ranking_course_id] => 2
            [ranking_college_id] => 20
            [ranking_year] => 2017
            [ranking_agency] => 3
            [ranking_value] => 30
            [ranking_salary] => 9.20 Lacs
            [ranking_fees] => 354500
        )

)

oldarray

Array
(
    [0] => Array
        (
            [ranking_course_id] => 2
            [ranking_college_id] => 20
            [ranking_year] => 2017
            [ranking_agency] => Array
                (
                    [0] => 1
                    [1] => 2
                    [2] => 3
                )

            [ranking_value] => Array
                (
                    [0] => 10
                    [1] => 20
                    [2] => 30
                )

            [ranking_salary] => 9.20 Lacs
            [ranking_fees] => 354500
        )

)

and now insert the records :)

For inserting multiple records use the following code.

$this->db->insert_batch("table_name", $array_name);

For a single dimension array, use the following code.

$this->db->insert("table_name", $array_name);

For more details see Active Record Class.

array key should be same as them name of the column in that table you inserting

This is altered version of @Nobita, for multidimensional array.

$oldarray = array(array("ranking_course_id" => "2", 
        "ranking_college_id"=> "20", 
        "ranking_year"=> "2017", 
        "ranking_agency"=> array("1","2","3"), 
        "ranking_value"=> array("10","20","30"), 
        "ranking_salary"=> "9.20 Lacs", 
        "ranking_fees"=> "354500"),
array("ranking_course_id" => "2", 
            "ranking_college_id"=> "20", 
            "ranking_year"=> "2017", 
            "ranking_agency"=> array("1","2","3"), 
            "ranking_value"=> array("10","20","30"), 
            "ranking_salary"=> "9.20 Lacs", 
            "ranking_fees"=> "354500"));
$new_array = [];
$j=0;//For row
foreach($oldarray as $array)
{
    $i=0;//For ranking agency and ranking value
    foreach ($array['ranking_agency'] as $key => $value) {            
        $new_array[$j] = $array;
        $new_array[$j]['ranking_agency'] = $array['ranking_agency'][$i];
        $new_array[$j]['ranking_value'] = $array['ranking_value'][$i];
        $i++; $j++;
    }
}
echo "<pre>";print_r($new_array);    
exit;

The array generation based on the 'ranking_value' & 'ranking_agency'. Happy coding...!