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...!