将数组中某一元素值相同的追加到该数组

李漾 2015-01-13 11:06:14
 
Array
(
[0] => Array
(
[num] => 1
[sendPhone] => 15670015154
[sendDate] => 2015-01-12 01:19:57
[sendStatus] => 1
)

[1] => Array
(
[num] => 1
[sendPhone] => 15518788555
[sendDate] => 2015-01-12 02:28:18
[sendStatus] => 0
)

[2] => Array
(
[num] => 1
[sendPhone] => 15518788555
[sendDate] => 2015-01-12 02:05:10
[sendStatus] => 1
)

[3] => Array
(
[num] => 1
[sendPhone] => 15518788544
[sendDate] => 2015-01-12 02:11:38
[sendStatus] => 1
)

[4] => Array
(
[num] => 2
[sendPhone] => 15670015154
[sendDate] => 2015-01-12 02:28:18
[sendStatus] => 0
)

)


sendPhone是相同的,想实现为下面的数组,数组中sendStatus=1表示发送成功sendStatus=0表示失败,num=1,表示为1条信息,时间取最大时间,我是想把数组组合成方便遍历的模式。请教怎么写,

 
Array
(
[0] => Array
(
[sendPhone] => 15670015154
[sendDate] => 2015-01-12 02:28:18
[success] =>1,
[failure]=>2,
)



[1] => Array
(
[num] => 1
[sendPhone] => 15518788555
[sendDate] => 2015-01-12 02:05:10
[success] => 1,
[failure]=>1
)

[2] => Array
(
[num] => 1
[sendPhone] => 15518788544
[sendDate] => 2015-01-12 02:11:38
[success] => 1,
[failure]=>
)


)
...全文
112 2 打赏 收藏 转发到动态 举报
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
李漾 2015-01-13
  • 打赏
  • 举报
回复
引用 1 楼 xuzuning 的回复:
$ar = array (
  0 => array (
    'num' => '1',
    'sendPhone' => '15670015154',
    'sendDate' => '2015-01-12 01:19:57',
    'sendStatus' => '1',
  ),
  1 => array (
    'num' => '1',
    'sendPhone' => '15518788555',
    'sendDate' => '2015-01-12 02:28:18',
    'sendStatus' => '0',
  ),
  2 => array (
    'num' => '1',
    'sendPhone' => '15518788555',
    'sendDate' => '2015-01-12 02:05:10',
    'sendStatus' => '1',
  ),
  3 => array (
    'num' => '1',
    'sendPhone' => '15518788544',
    'sendDate' => '2015-01-12 02:11:38',
    'sendStatus' => '1',
  ),
  4 => array (
    'num' => '2',
    'sendPhone' => '15670015154',
    'sendDate' => '2015-01-12 02:28:18',
    'sendStatus' => '0',
  ),
);

$res = array();
foreach($ar as $item) {
  $k = $item['sendPhone'];
  if(! isset($res[$k])) {
    $res[$k] = array(
      'sendPhone' => $k,
      'sendDate' => '',
      'success' => 0,
      'failure' => 0,
    );
  }
  $res[$k]['sendDate'] = max($res[$k]['sendDate'], $item['sendDate']);
  $res[$k]['success'] += $item['sendStatus'] ? $item['num'] : 0;
  $res[$k]['failure'] += ! $item['sendStatus'] ? $item['num'] : 0;

}
print_r(array_values($res));
Array
(
    [0] => Array
        (
            [sendPhone] => 15670015154
            [sendDate] => 2015-01-12 02:28:18
            [success] => 1
            [failure] => 2
        )

    [1] => Array
        (
            [sendPhone] => 15518788555
            [sendDate] => 2015-01-12 02:28:18
            [success] => 1
            [failure] => 1
        )

    [2] => Array
        (
            [sendPhone] => 15518788544
            [sendDate] => 2015-01-12 02:11:38
            [success] => 1
            [failure] => 0
        )

)

成功了。谢谢版主的支持,逻辑原来是这样的!,
xuzuning 2015-01-13
  • 打赏
  • 举报
回复
$ar = array (
  0 => array (
    'num' => '1',
    'sendPhone' => '15670015154',
    'sendDate' => '2015-01-12 01:19:57',
    'sendStatus' => '1',
  ),
  1 => array (
    'num' => '1',
    'sendPhone' => '15518788555',
    'sendDate' => '2015-01-12 02:28:18',
    'sendStatus' => '0',
  ),
  2 => array (
    'num' => '1',
    'sendPhone' => '15518788555',
    'sendDate' => '2015-01-12 02:05:10',
    'sendStatus' => '1',
  ),
  3 => array (
    'num' => '1',
    'sendPhone' => '15518788544',
    'sendDate' => '2015-01-12 02:11:38',
    'sendStatus' => '1',
  ),
  4 => array (
    'num' => '2',
    'sendPhone' => '15670015154',
    'sendDate' => '2015-01-12 02:28:18',
    'sendStatus' => '0',
  ),
);

$res = array();
foreach($ar as $item) {
  $k = $item['sendPhone'];
  if(! isset($res[$k])) {
    $res[$k] = array(
      'sendPhone' => $k,
      'sendDate' => '',
      'success' => 0,
      'failure' => 0,
    );
  }
  $res[$k]['sendDate'] = max($res[$k]['sendDate'], $item['sendDate']);
  $res[$k]['success'] += $item['sendStatus'] ? $item['num'] : 0;
  $res[$k]['failure'] += ! $item['sendStatus'] ? $item['num'] : 0;

}
print_r(array_values($res));
Array
(
    [0] => Array
        (
            [sendPhone] => 15670015154
            [sendDate] => 2015-01-12 02:28:18
            [success] => 1
            [failure] => 2
        )

    [1] => Array
        (
            [sendPhone] => 15518788555
            [sendDate] => 2015-01-12 02:28:18
            [success] => 1
            [failure] => 1
        )

    [2] => Array
        (
            [sendPhone] => 15518788544
            [sendDate] => 2015-01-12 02:11:38
            [success] => 1
            [failure] => 0
        )

)

21,873

社区成员

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

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