dpppic5186 2013-05-10 09:11
浏览 30
已采纳

如何在数组中进行计算

I have an array :

Array
(
    [0] => Array
  (
      [batch_id] => 1
      [seq_id] => 1
      [q_id] => 2046
      [a1] => 0
      [a2] => 1
      [a3] => 2
      [a4] => 3
      [a5] => 4

  )
)

I need to minus the value of a1-a5 by 1

desire result(e.g. a1):

 array(4) {
["w_id"]=>
string(5) "99911"
["q_id"]=>
string(4) "2046"
["c_id"]=>
string(6) "a1"
["rank"]=>
int(1) "-1"
}

My code is as follow:

$result = mysql_query("Select * from table_1");     
while($cr = mysql_fetch_array($result)){    
    $rr_id = $cr['batch_id'].$cr['seq_id'];
    $rid = '999'.$rr_id;
          $q_id = $cr['q_id'];
     foreach ($cr as $k => $v){
  if(preg_match('{^a\d+$}',$k)){
    $new_insert[] = array(
        'w_id'=>$rid,
        'q_id' =>$q_id,
        'c_id' =>$k,
        'rank'=>$v-1
);
     }
  }

However, the result of rank becomes

array(4) {
["w_id"]=>
string(5) "99911"
["q_id"]=>
string(4) "2046"
["c_id"]=>
string(6) "a1"
["rank"]=>
int(0)
}

Cannot show the value of rank

Any problem with my code??Can someone answer my question thank you very much

  • 写回答

4条回答 默认 最新

  • ds342222 2013-05-10 09:16
    关注

    You can use :

    $data = array_map(function ($v) {
        foreach($v as $k => &$x) {
            if (preg_match('{^a\d+$}', $k)) {
                $x = $x - 1;
            }
        }
        return $v;
    }, $data);
    
    print_r($data);
    

    Live Demo

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(3条)

报告相同问题?

悬赏问题

  • ¥50 导入文件到网吧的电脑并且在重启之后不会被恢复
  • ¥15 (希望可以解决问题)ma和mb文件无法正常打开,打开后是空白,但是有正常内存占用,但可以在打开Maya应用程序后打开场景ma和mb格式。
  • ¥20 ML307A在使用AT命令连接EMQX平台的MQTT时被拒绝
  • ¥20 腾讯企业邮箱邮件可以恢复么
  • ¥15 有人知道怎么将自己的迁移策略布到edgecloudsim上使用吗?
  • ¥15 错误 LNK2001 无法解析的外部符号
  • ¥50 安装pyaudiokits失败
  • ¥15 计组这些题应该咋做呀
  • ¥60 更换迈创SOL6M4AE卡的时候,驱动要重新装才能使用,怎么解决?
  • ¥15 让node服务器有自动加载文件的功能