Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/236.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 数组输出被复制_Php - Fatal编程技术网

Php 数组输出被复制

Php 数组输出被复制,php,Php,我从PHP中的POST操作中获得了以下Array: 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] =>

我从PHP中的
POST
操作中获得了以下
Array

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>";
        }
最后一行重复!我的代码有什么地方做错了吗?

试试这个:

$array = $_POST;
unset($array['submit_values']);
unset($array['action']); //...

您没有使用
操作
提交值
检查上次循环,因此它返回上次保存的值

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

当循环通过[action]=>store[submit\u values]=>store时,控件不会进入任何if语句,因此在最后两个循环中,它会打印以前设置的值

即2014年第2季度第3级ID 58

解决方案:


在foreach循环结束时,尝试将ID级别季度年度重新初始化为”(空白值)

如果这是您想要得到的输出,代码是正确的。但是你没有告诉我们你想要什么,所以我们不能告诉你。我不想重复最后一行!
$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 = '';