-->

PHP:在给予的foreach数重命名重复键(php: rename duplicate keys

2019-10-20 02:15发布

我有一个表格数据和所述数据的阵列是这样的:

$datas=array("x-1","y-2","y-2","y-3","t-1");

我的foreach循环:

    foreach($datas as $x => $data){
    $data=explode("-",$data);
    if($data[0]==$data[0]+1){$n=1;}else{$n=0;}
    $keys[$x]=$data[0].$n++;
    $vals[$x]=$data[1];
}

我写不出真正的代码,我的第3行是错误的,我认为(如果($数据[0] = $数据[0] +1){$ N = “1”;}其他{$ N = “”; })所以,我想重新命名给予编号重复键。 我的输出应该是这样的:

x=1 y1=1    y2=2    y3=2    t1=1

Answer 1:

尝试

     $datas=array("x-1","y-2","y-2","y-3","t-1");

     $i=0;
     $n=1;
     foreach($datas as $x => $data){
     $data=explode("-",$data);
     $data2=explode("-",$datas[$i+1]);
     if($data[0]==$data2[0])
      {  
      $keys[$x]=$data[0].$n; 
      $n=$n+1;
      }
      else
     {
     $keys[$x]=$data[0].$n; 
     $n=0;
     }

       $vals[$x]=$data[1];
    $i++;
 }


Answer 2:

这段代码有错误,你使用=这将分配价值,而不是进行比较。
n应该是整数串
为了解决这个问题

  foreach($datas as $x => $data){
    $data=explode("-",$data);
    if($keys[$x]==$keys[$x+1]){$n=1;}else{$n=0;}
    $keys[$x]=$data[0].$n++;
    $vals[$x]=$data[1];
}


Answer 3:

if($data[0]=$data[0]+1){$n="1";}else{$n="";}

使用==而不是=的if语句



文章来源: php: rename duplicate keys by giving number in foreach