我的意思是,在许多数组(例如数组21、23和24)中,某些值为“ nit”的键具有相同的值。我想选择所有具有相同“ nit”的数组,并使用所有这些创建一个新数组。我需要一个数组(从所有具有相同“ nit”的数组中)保留在主数组中(随机选择一个)。
[20] => Array
(
[fecha] => 2018-08-27 18:38:49
[id_cliente] =>
[nit] => 50255872726
[destino] => Copartes.Gt
[nombre] => Registrar Cliente
[telefono] => 55872726
[type] => IN
[mensaje] => Mandame el número de cuenta y te voy a depositar
)
[21] => Array
(
[fecha] => 2018-08-27 18:36:20
[id_cliente] => 110099
[nit] => 3108449-4
[destino] => Copartes.Gt
[nombre] => Guillermo Suhr
[telefono] => 42150465
[type] => IN
[mensaje] => Muchas gracias
)
[22] => Array
(
[fecha] => 2018-08-27 18:30:05
[id_cliente] => 27523
[nit] => 1241764-5
[destino] => Copartes.Gt
[nombre] => Manuel Garcia
[telefono] => 53186931
[type] => IN
[mensaje] => Gracias
)
[23] => Array
(
[fecha] => 2018-08-27 18:30:00
[id_cliente] => 110099
[nit] => 3108449-4
[destino] => Copartes.Gt
[nombre] => Guillermo Suhr
[telefono] => 42150465
[type] => IN
[mensaje] => Gracias
)
[24] => Array
(
[fecha] => 2018-08-27 18:30:00
[id_cliente] => 110099
[nit] => 3108449-4
[destino] => Copartes.Gt
[nombre] => Guillermo Suhr
[telefono] => 42150465
[type] => IN
[mensaje] => Buena tarde
答案 0 :(得分:1)
仅filter个数组:
$a = array_filter($a, function($val) {
static $set = []; // collect nits
$nit = $val['nit'];
if (!isset($set[$nit])) { // new nit
return $set[$nit] = true; // true
}
return false;
});
说明:
过滤器回调是为每个数组元素调用的函数。 (因为没有传递给array_filter()
的标志,所以回调仅接收数组值。)此函数有一个static variable,它仅存在于函数范围内,并且在函数作用时不会丢失它的值通话已完成。它会收集到目前为止的所有尼特值,如果是首次出现,则返回true
,否则返回false
。
答案 1 :(得分:0)
我总是发现最容易做的事情是一个简单的foreach循环,将您的项目排序到另一个按您希望的键分组的数组中,在我的简化示例中,我使用了category
... >
// Source Data
$array = array(
array( 'category' => 10, 'name' => 'aaa' ),
array( 'category' => 11, 'name' => 'bbb' ),
array( 'category' => 12, 'name' => 'ccc' ),
array( 'category' => 10, 'name' => 'ddd' ),
array( 'category' => 11, 'name' => 'eee' ),
array( 'category' => 11, 'name' => 'fff' ),
array( 'category' => 13, 'name' => 'ggg' ),
);
// Create a container using "category"
$groups = array_fill_keys( array_unique( array_column( $array, 'category') ), array() );
// Loop and Sort
foreach( $array as $index => $item )
{
$groups[ $item['category'] ][ $index ] = $item;
}
// Done
print_r( $groups );
有了这些信息后,现在就可以通过每个子数组中的计数来找出哪些记录具有多个记录。