>백엔드 개발 >PHP 튜토리얼 >将数组中某一元素值相同的追加到该数组

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

WBOY
WBOY원래의
2016-06-23 13:41:451164검색

 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]=>        ))


回复讨论(解决方案)

$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        ))

$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        ))



成功了。谢谢版主的支持,逻辑原来是这样的!,
성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.