1

次のような配列を変換する方法はありますか?

Array ( [level-1] => 2 [quarter-1] => 1 [year-1] => 2014 [level-2] => 2 [quarter-2] => 2 [year-2] => 2015 [level-49] => 2 [quarter-49] => 2 [year-49] => 2015 [level-58] => 1 [quarter-58] => 1 [year-58]

キーワードの後の数字だけを取得して、SQLテーブルで使用します。たとえば、テーブルは次のようになります。

 ID 1 Level 2 Quarter 1 Year 2014 
 ID 2 level 2 quater 2 Year 2015
 ID 49 level 2 quarter 2 year 2015 

私は試した

if(!empty($_POST)){
        print_r ($_POST);
        echo "<br/><br/>";
        $s=$_POST;

        echo $abc= implode(',', $s);
        for($a=0;$a<count($s);$a++){
            $ar=explode(',',$abc);
            echo $var=$ar[$a];

        }
  }

しかし、私が得る結果は次のようなものです:

2,1,2014,2,2,2015,2,2,2015...

IDも表示する必要があります。しかし、私は最も重要なことに、結果を解釈してデータベースに配置する方法を知りません。

4

2 に答える 2

3

これを試して :

$array = array ( "level-1" => 2, "quarter-1" => 1, "year-1" => 2014, "level-2" => 2, "quarter-2" => 2, "year-2" => 2015, "level-49" => 2, "quarter-49" => 2, "year-49" => 2015, "level-58" => 1, "quarter-58" => 1, "year-58"=>2016);

foreach(array_chunk($array,3,true) as $val){
    foreach($val as $k=>$v){
       if(strpos($k, "level") !== false){
           $temp    = explode("-",$k);
           $id      = $temp[1];
           $level   = $v;
       }
       if(strpos($k, "quarter") !== false){
           $quarter = $v;
       }
       if(strpos($k, "year") !== false){
           $year    = $v;
       }
    }
    echo "ID ".$id." Level ".$level." Quarter ".$quarter." Year ".$year;
    echo "<br>";
}

出力:

ID 1 Level 2 Quarter 1 Year 2014
ID 2 Level 2 Quarter 2 Year 2015
ID 49 Level 2 Quarter 2 Year 2015
ID 58 Level 1 Quarter 1 Year 2016
于 2013-03-27T09:10:00.993 に答える
0

PHPでコーディングするかどうかわからないので、それを行うためのロジックについて説明します。

for(int i=0;i<array.length;i=i+3) {

//get value from array[i]; get the level-x field and retrieve the x value, then extract integers accordingly from it after keywords. In java StringTokenizer can be used for this, or regex etc

//again get value from array[i+1] and extract the integer

//get the value from array[i+2] and do the same as above.

}

配列がシャッフルされている場合は、それをlevel-xと一致させて、挿入する正確なタプルを取得できます。したがって、level-x、x値は、関連するすべての値をグループ化するインデックスとして機能します。

于 2013-03-27T09:09:22.370 に答える