首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >数组输出重复

数组输出重复
EN

Stack Overflow用户
提问于 2013-04-12 18:50:06
回答 3查看 60关注 0票数 0

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

代码语言:javascript
复制
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 
) 

我执行以下操作以从数组中获取值:

代码语言:javascript
复制
        $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>";
        }

但我得到的是:

代码语言:javascript
复制
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

最后一行重复!我在代码中做错了什么吗?

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2013-04-12 18:52:16

试试这个:

代码语言:javascript
复制
$array = $_POST;
unset($array['submit_values']);
unset($array['action']); //...
票数 0
EN

Stack Overflow用户

发布于 2013-04-12 19:03:22

您不使用actionsubmit_values检查最后一个循环,因此它返回上次保存的值

代码语言:javascript
复制
$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>";
    }

在循环后重置数值也总是更好:

代码语言:javascript
复制
foreach(array_chunk($array,3,true) as $val){
    $id = '';
    $level = '';
    $quarter = '';
    $year = '';
票数 0
EN

Stack Overflow用户

发布于 2013-04-12 19:03:49

当循环执行 = > store和submit_values =>时,控件不会进入任何if语句,因此在最后两个循环期间,它会打印先前设置的值

,即ID 58 Level 3 Quarter 2 Year 2014

解决方案:

尝试在foreach循环结束时重新初始化IDLevelQuarterYear to “”(空值)

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/15969418

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档