php去重,关于一个php数组去重的问题

场景:

需要从excel中导入信息导数据库。要求如下:

同一订单号下,可以存在多条记录

检测“产品”在“使用产品”(在已有数据表中获取)内,方可导入

表中相同交易单号的多个产品,只要有一个产品在“使用产品”内,就全部导入,记成1条。如果一个都没有则不导入

现在我模拟数据如下:

bVSMlq?w=1241&h=502

打印出来的导入数组为:

array (size=4)

'667283818213324' =>

array (size=17)

0 =>

array (size=9)

0 => string '2017年8月12日23:44:58' (length=24)

1 => string '李锐钊' (length=9)

2 => string '满堂红' (length=9)

3 => string '667283818213324' (length=15)

4 => string 'ruizhaole112313' (length=15)

5 => string '十天PHP从入门到放弃' (length=27)

6 => float 1

7 => float 2

8 => string '火星' (length=6)

1 =>

array (size=9)

0 => string '2017年8月12日23:44:59' (length=24)

1 => string '李锐钊' (length=9)

2 => string '满堂红' (length=9)

3 => string '667283818213324' (length=15)

4 => string 'ruizhaole112314' (length=15)

5 => string '十天PHP从入门到放弃' (length=27)

6 => float 2

7 => float 3

8 => string '火星' (length=6)

2 =>

array (size=9)

0 => string '2017年8月12日23:44:60' (length=24)

1 => string '李锐钊' (length=9)

2 => string '满堂红' (length=9)

3 => string '667283818213324' (length=15)

4 => string 'ruizhaole112315' (length=15)

5 => string '十天PHP从入门到放弃' (length=27)

6 => float 3

7 => float 4

8 => string '火星' (length=6)

3 =>

array (size=9)

0 => string '2017年8月12日23:44:61' (length=24)

1 => string '李锐钊' (length=9)

2 => string '满堂红' (length=9)

3 => string '667283818213324' (length=15)

4 => string 'ruizhaole112316' (length=15)

5 => string '十天PHP从入门到放弃' (length=27)

6 => float 4

7 => float 5

8 => string '火星' (length=6)

4 =>

array (size=9)

0 => string '2017年8月12日23:44:62' (length=24)

1 => string '李锐钊' (length=9)

2 => string '满堂红' (length=9)

3 => string '667283818213324' (length=15)

4 => string 'ruizhaole112317' (length=15)

5 => string '十天PHP从入门到放弃' (length=27)

6 => float 5

7 => float 6

8 => string '火星' (length=6)

5 =>

array (size=9)

0 => string '2017年8月12日23:44:63' (length=24)

1 => string '李锐钊' (length=9)

2 => string '满堂红' (length=9)

3 => string '667283818213324' (length=15)

4 => string 'ruizhaole112318' (length=15)

5 => string '十天PHP从入门到放弃' (length=27)

6 => float 6

7 => float 7

8 => string '火星' (length=6)

6 =>

array (size=9)

0 => string '2017年8月12日23:44:64' (length=24)

1 => string '李锐钊' (length=9)

2 => string '满堂红' (length=9)

3 => string '667283818213324' (length=15)

4 => string 'ruizhaole112319' (length=15)

5 => string '十天PHP从入门到放弃' (length=27)

6 => float 7

7 => float 8

8 => string '火星' (length=6)

7 =>

array (size=9)

0 => string '2017年8月12日23:44:68' (length=24)

1 => string '李锐钊' (length=9)

2 => string '满堂红' (length=9)

3 => string '667283818213324' (length=15)

4 => string 'ruizhaole112323' (length=15)

5 => string '十天PHP从入门到放弃' (length=27)

6 => float 11

7 => float 12

8 => string '火星' (length=6)

8 =>

array (size=9)

0 => string '2017年8月12日23:44:69' (length=24)

1 => string '李锐钊' (length=9)

2 => string '满堂红' (length=9)

3 => string '667283818213324' (length=15)

4 => string 'ruizhaole112324' (length=15)

5 => string '十天PHP从入门到放弃' (length=27)

6 => float 12

7 => float 13

8 => string '火星' (length=6)

9 =>

array (size=9)

0 => string '2017年8月12日23:44:70' (length=24)

1 => string '李锐钊' (length=9)

2 => string '满堂红' (length=9)

3 => string '667283818213324' (length=15)

4 => string 'ruizhaole112325' (length=15)

5 => string '十天PHP从入门到放弃' (length=27)

6 => float 13

7 => float 14

8 => string '火星' (length=6)

10 =>

array (size=9)

0 => string '2017年8月12日23:44:71' (length=24)

1 => string '李锐钊' (length=9)

2 => string '满堂红' (length=9)

3 => string '667283818213324' (length=15)

4 => string 'ruizhaole112326' (length=15)

5 => string '十天PHP从入门到放弃' (length=27)

6 => float 14

7 => float 15

8 => string '火星' (length=6)

11 =>

array (size=9)

0 => string '2017年8月12日23:44:72' (length=24)

1 => string '李锐钊' (length=9)

2 => string '满堂红' (length=9)

3 => string '667283818213324' (length=15)

4 => string 'ruizhaole112327' (length=15)

5 => string '十天PHP从入门到放弃' (length=27)

6 => float 15

7 => float 16

8 => string '火星' (length=6)

12 =>

array (size=9)

0 => string '2017年8月12日23:44:73' (length=24)

1 => string '李锐钊' (length=9)

2 => string '满堂红' (length=9)

3 => string '667283818213324' (length=15)

4 => string 'ruizhaole112328' (length=15)

5 => string '十天PHP从入门到放弃' (length=27)

6 => float 16

7 => float 17

8 => string '火星' (length=6)

13 =>

array (size=9)

0 => string '2017年8月12日23:44:74' (length=24)

1 => string '李锐钊' (length=9)

2 => string '满堂红' (length=9)

3 => string '667283818213324' (length=15)

4 => string 'ruizhaole112329' (length=15)

5 => string '十天PHP从入门到放弃' (length=27)

6 => float 17

7 => float 18

8 => string '火星' (length=6)

14 =>

array (size=9)

0 => string '2017年8月12日23:44:76' (length=24)

1 => string '李锐钊' (length=9)

2 => string '满堂红' (length=9)

3 => string '667283818213324' (length=15)

4 => string 'ruizhaole112331' (length=15)

5 => string '十天PHP从入门到放弃' (length=27)

6 => float 19

7 => float 20

8 => string '火星' (length=6)

15 =>

array (size=9)

0 => string '2017年8月12日23:44:77' (length=24)

1 => string '李锐钊' (length=9)

2 => string '满堂红' (length=9)

3 => string '667283818213324' (length=15)

4 => string 'ruizhaole112332' (length=15)

5 => string '十天PHP从入门到放弃' (length=27)

6 => float 20

7 => float 21

8 => string '火星' (length=6)

16 =>

array (size=9)

0 => string '2017年8月12日23:44:78' (length=24)

1 => string '李锐钊' (length=9)

2 => string '满堂红' (length=9)

3 => string '667283818213324' (length=15)

4 => string 'ruizhaole112333' (length=15)

5 => string 'java大法千秋万代' (length=22)

6 => float 21

7 => float 22

8 => string '火星' (length=6)

'667283818213325' =>

array (size=1)

0 =>

array (size=9)

0 => string '2017年8月12日23:44:65' (length=24)

1 => string '李锐钊' (length=9)

2 => string '满堂红' (length=9)

3 => string '667283818213325' (length=15)

4 => string 'ruizhaole112320' (length=15)

5 => string '十天PHP从入门到放弃' (length=27)

6 => float 8

7 => float 9

8 => string '火星' (length=6)

'667283818213326' =>

array (size=1)

0 =>

array (size=9)

0 => string '2017年8月12日23:44:66' (length=24)

1 => string '李锐钊' (length=9)

2 => string '满堂红' (length=9)

3 => string '667283818213326' (length=15)

4 => string 'ruizhaole112321' (length=15)

5 => string '十天PHP从入门到放弃' (length=27)

6 => float 9

7 => float 10

8 => string '火星' (length=6)

'667283818213327' =>

array (size=2)

0 =>

array (size=9)

0 => string '2017年8月12日23:44:67' (length=24)

1 => string '李锐钊' (length=9)

2 => string '满堂红' (length=9)

3 => string '667283818213327' (length=15)

4 => string 'ruizhaole112322' (length=15)

5 => string '十天PHP从入门到放弃' (length=27)

6 => float 10

7 => float 11

8 => string '火星' (length=6)

1 =>

array (size=9)

0 => string '2017年8月12日23:44:75' (length=24)

1 => string '李锐钊' (length=9)

2 => string '满堂红' (length=9)

3 => string '667283818213327' (length=15)

4 => string 'ruizhaole112330' (length=15)

5 => string '十天PHP从入门到放弃' (length=27)

6 => float 18

7 => float 19

8 => string '火星' (length=6)

(我的思路是用订单号做key来存放数组,但是下一步中检测多个记录在不在产品表中存在至少一个相同记录不知道该如何写,没有头绪)

代码:

// +-----------------------------------------------

// | 导入xls至数据库

// +-----------------------------------------------

public function importXLS()

{

if ($this->request->isPost()) {

$file = $this->request->param('file', '' ,'trim');

$file = ROOT_PATH . 'public' . $file;

if (empty($file)) return $this->error('不能导入空文件');

if (!file_exists($file)) return $this->error('要导入的文件不存在');

// 自动判断后缀名是xls 还是 xlsx,两种不同的后缀需要的类不一样

$extension = strtolower(pathinfo($file, PATHINFO_EXTENSION));

if ($extension =='xlsx') {

$objReader = new PHPExcel_Reader_Excel2007();

} else if ($extension =='xls') {

$objReader = new PHPExcel_Reader_Excel5();

}

$objPHPExcel = $objReader->load($file);

$excelarray=$objPHPExcel->getsheet(0)->toArray();

array_shift($excelarray);//将第一行移出数组

if (empty($excelarray)) {

return $this->error('没有检测到插入数据,请重新编写导入数据列表');

unlink($file);

}

foreach($excelarray as $k=> $v){

$taobaoLists[$v[3]][] = $v;

/* $data[$k]['tb_rq']=$v[0];

$data[$k]['tb_jbr']=$v[1];

$data[$k]['tb_dp']=$v[2];

$data[$k]['tb_orderno']=$v[3];

$data[$k]['tb_ww']=$v[4];

$data[$k]['tb_pro']=$v[5];

$data[$k]['tb_prono']=$v[6];

$data[$k]['tb_xsje']=$v[7];

$data[$k]['tb_address']=$v[8]; */

// $data[$k]['tb_import_type'] = 2; // 数据外部导入

}

// 取出所有使用产品列表

$proLists = Db::name('sys_products')->where('pro_status', 1)->field('pro_name')->select();

$proLists = array_column($proLists, 'pro_name');

foreach ($taobaoLists as $orderNumber => $list) {

if (count($list) > 1) {

foreach ($list as $arr) {

}

} else {

if (!in_array($list[0][5], $proLists)) unset($taobaoLists[$orderNumber]);

}

}

// $excelarray = array_filter(filter_array($excelarray));

dump($taobaoLists);exit;

// // 删除空行,避免用户操作不当造成过多空白数组

if (count($data) < 1) {

return $this->error('没有检测到插入数据,请重新编写导入数据列表');

unlink($data); // 删除文件

}

// 用交易号为下标建立数组

foreach ($data as $row) {

$arrs[$row['tb_orderno']] = $row;

$arrs[$row['tb_orderno']]['items'] = [];

}

foreach ($arrs as $key => $arr) {

// if ($arr['tb_orderno'])

}

dump($proLists); exit;

}

}

先谢谢~

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值