0

PHPArrayでの操作から取得したものは次のとおりです。POST

Array ( 
    [level-1] => 3 
    [quarter-1] => 1 
    [year-1] => 2014 
    [level-2] => 4 
    [quarter-2] => 2 
    [year-2] => 2014 
    [level-53] => 2 
    [quarter-53] => 1 
    [year-53] => 2013 
    [level-58] => 3 
    [quarter-58] => 2 
    [year-58] => 2014 
    [action] => store 
    [submit_values] => Store 
) 

配列から値を取得するには、次の操作を行います。

        $array=$_POST;
        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 3 Quarter 1 Year 2014
ID 2 Level 4 Quarter 2 Year 2014
ID 53 Level 2 Quarter 1 Year 2013
ID 58 Level 3 Quarter 2 Year 2014
ID 58 Level 3 Quarter 2 Year 2014

最後の行を複製して!コードで何か間違ったことはありますか?

4

3 に答える 3

0

これを試して:

$array = $_POST;
unset($array['submit_values']);
unset($array['action']); //...
于 2013-04-12T10:52:15.723 に答える
0

actionandを使用して最後のループをチェックしないため、最後に保存submit_valuesされた値が返されます。

$array=$_POST;
    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;
             }
         elseif(strpos($k, "quarter") !== false){
             $quarter = $v;
         }
         elseif(strpos($k, "year") !== false){
            $year    = $v;
         }
         // if not one of ifs works
         else continue;
        }
      echo "ID ".$id." Level ".$level." Quarter ".$quarter." Year ".$year;
      echo "<br>";
    }

また、ループ後に値をリセットすることを常にお勧めします。

foreach(array_chunk($array,3,true) as $val){
    $id = '';
    $level = '';
    $quarter = '';
    $year = '';
于 2013-04-12T11:03:22.433 に答える
0

ループが[action] = >store および[submit_values] => Storeを通過すると、コントロールは if ステートメントに入りません。したがって、最後の 2 つのループでは、以前に設定された値が出力されます。

つまり、ID 58 レベル 3 2014 年第 2 四半期

解決:

foreach ループの最後でIDLevelQuarterYear" " (空白値)に再初期化してみてください。

于 2013-04-12T11:03:48.847 に答える