Home > Backend Development > PHP Tutorial > 将数组中某一元素值相同的追加到该数组

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

WBOY
Release: 2016-06-23 13:41:45
Original
1153 people have browsed it

 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        ))
Copy after login


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]=>        ))
Copy after login


回复讨论(解决方案)

$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));
Copy after login
Copy after login
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        ))
Copy after login
Copy after login

$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));
Copy after login
Copy after login
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        ))
Copy after login
Copy after login



成功了。谢谢版主的支持,逻辑原来是这样的!,
source:php.cn
Statement of this Website
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn
Popular Tutorials
More>
Latest Downloads
More>
Web Effects
Website Source Code
Website Materials
Front End Template