数组加减问题

littlebirds 2013-09-02 04:07:08
已知数组a和b。

//数组a:
array (
0 =>
array (
'cust_no' => '310F6 1VA5A',
'lotno' => '2X15',
'part_count' => '32',
),
1 =>
array (
'cust_no' => '310F6 1VA5A',
'lotno' => '2Z25',
'part_count' => '32',
),
)

//数组b:

array (
0 =>
array (
'cust_no' => '310F6 1VA5A',
'total' => '48',
),
)


数组a cust_no为310F6 1VA5A时,对应的总量是32+32=64,数组b cust_no为310F6 1VA5A时对应的总量是48。
想求得数组b总量为48时,对应数组a中的哪些内容?数组a剩余的结果是多少?

以这个例子来说,
得到数组a的结果:

//数组a:
array (
0 =>
array (
'cust_no' => '310F6 1VA5A',
'lotno' => '2X15',
'part_count' => '32',
),
1 =>
array (
'cust_no' => '310F6 1VA5A',
'lotno' => '2Z25',
'part_count' => '16',
),
)

剩余数组a的结果:

//数组a:
array (
0 =>
array (
'cust_no' => '310F6 1VA5A',
'lotno' => '2X15',
'part_count' => '0',
),
1 =>
array (
'cust_no' => '310F6 1VA5A',
'lotno' => '2Z25',
'part_count' => '16',
),
)


如何能得到这样的结果?
...全文
116 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
littlebirds 2013-09-03
  • 打赏
  • 举报
回复
引用 4 楼 snmr_com 的回复:
不是数据库,就是php的数组,把一维和二维的key对调 $a[行][列] 转换成 $a[列][行] 而已 这样就可以把 $a[某列] 作为一个一维数组,做加减,交并差,累计都很方便 我记得以前发过的
好的,谢谢!我试试。
xuzuning 2013-09-02
  • 打赏
  • 举报
回复
//数组a:
$a = array (
  0 => 
  array (
    'cust_no' => '310F6 1VA5A',
    'lotno' => '2X15',
    'part_count' => '32',
  ),
  1 => 
  array (
    'cust_no' => '310F6 1VA5A',
    'lotno' => '2Z25',
    'part_count' => '32',
  ),
);
 
//数组b:
 
$b = array (
  0 => 
  array (
    'cust_no' => '310F6 1VA5A',
    'total' => '48',
  ),
);

foreach($b as $source) {
  $num = $source['total'];
  foreach($a as $i=>$dest) {
    if($num == 0) break;
    if($dest['cust_no'] != $source['cust_no']) continue;
    if($num >= $dest['part_count']) {
      $num -= $dest['part_count'];
      $res[] = $dest;
      $a[$i]['part_count'] = 0;
    }else {
      $dest['part_count'] = $num;
      $res[] = $dest;
      $a[$i]['part_count'] -= $num;
      $num = 0;
    }
  }
}
var_export($res);
var_export($a);
array (
  0 => 
  array (
    'cust_no' => '310F6 1VA5A',
    'lotno' => '2X15',
    'part_count' => '32',
  ),
  1 => 
  array (
    'cust_no' => '310F6 1VA5A',
    'lotno' => '2Z25',
    'part_count' => 16,
  ),
)


array (
  0 => 
  array (
    'cust_no' => '310F6 1VA5A',
    'lotno' => '2X15',
    'part_count' => 0,
  ),
  1 => 
  array (
    'cust_no' => '310F6 1VA5A',
    'lotno' => '2Z25',
    'part_count' => 16,
  ),
)
ImN1 2013-09-02
  • 打赏
  • 举报
回复
不是数据库,就是php的数组,把一维和二维的key对调 $a[行][列] 转换成 $a[列][行] 而已 这样就可以把 $a[某列] 作为一个一维数组,做加减,交并差,累计都很方便 我记得以前发过的
littlebirds 2013-09-02
  • 打赏
  • 举报
回复
引用 1 楼 snmr_com 的回复:
你之前不是问过这个问题了么? 如果你要对类似数组做很多纵向(column)计算的话,我建议你不如做个行列转换,思路就开阔多了 大不了计算完成后再一次行列转换换回来就是了
如果是数据库的行列转换,那是不是涉及到了交叉表?这个交叉表很麻烦啊。
littlebirds 2013-09-02
  • 打赏
  • 举报
回复
引用 1 楼 snmr_com 的回复:
你之前不是问过这个问题了么? 如果你要对类似数组做很多纵向(column)计算的话,我建议你不如做个行列转换,思路就开阔多了 大不了计算完成后再一次行列转换换回来就是了
行列转换没用过,能简单举个例子么?
ImN1 2013-09-02
  • 打赏
  • 举报
回复
你之前不是问过这个问题了么? 如果你要对类似数组做很多纵向(column)计算的话,我建议你不如做个行列转换,思路就开阔多了 大不了计算完成后再一次行列转换换回来就是了

21,887

社区成员

发帖
与我相关
我的任务
社区描述
从PHP安装配置,PHP入门,PHP基础到PHP应用
社区管理员
  • 基础编程社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧