【问题标题】:how to insert a array data in multiple columns based on a value pair which exists in array in php如何根据存在于php数组中的值对在多列中插入数组数据
【发布时间】:2018-02-23 01:33:11
【问题描述】:
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" 
    } 
}  

我要插入的是以下内容。

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

请帮帮我。

【问题讨论】:

  • 询问codeigniter?
  • 是的@VijaySharma

标签: php mysql arrays codeigniter


【解决方案1】:

试试这个锻炼

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

输出:

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
        )

)

现在插入记录:)

【讨论】:

  • 你真是太棒了,非常感谢你
【解决方案2】:

这是@Nobita 的修改版本,用于多维数组。

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

基于“ranking_value”和“ranking_agency”的数组生成。 编码快乐...!

【讨论】:

    【解决方案3】:

    要插入多条记录,请使用以下代码。

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

    对于一维数组,使用以下代码。

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

    更多详情请见Active Record Class

    数组键应与您插入的表中的列名相同

    【讨论】:

    • @SunnySaini 它不起作用,因为您的数组是嵌套数组,所以请转换为单个 daimension 数组
    • @SunnySaini ranking_agency n ranking_value 不应该是数组。
    • 你的数组应该是这样的array(1) { [0]=&gt; array(7) { ["ranking_course_id"]=&gt; string(1) "2" ["ranking_college_id"]=&gt; string(2) "20" ["ranking_year"]=&gt; string(4) "2017" ["ranking_agency"]=&gt; string(2) "1" ["ranking_value"]=&gt; string(2) "1" ["ranking_salary"]=&gt; string(9) "9.20 Lacs" ["ranking_fees"]=&gt; string(6) "354500" } }
    • 但我有这样的数组数据,所以我必须使用这个插入我在排名值中发布 3 个值,对应于 3 个排名机构
    • @SunnySaini ranking_agency n ranking_value 每次都应该是相同的长度?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-11-24
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多