如何解决如何在PHP中按索引对Loop进行分组
我正在建立一个通知系统(让我知道您何时到达),并且无法通过电子邮件进行分组。我需要将产品与特定的电子邮件分组以设置电子邮件发送。我的问题是通过电子邮件分隔单独的输出
数组
$resultado = array(
array( 'email' => 'de@email.com','ean' => '1278','desc' => 'PROD1' ),array( 'email' => 'de@email.com','ean' => '2342','desc' => 'PROD2' ),'ean' => '7567','desc' => 'PROD3' ),array( 'email' => 'ma@email.com','ean' => '5555','desc' => 'PROD4' ),'ean' => '3335','desc' => 'PROD5' ),);
组
$saida = array();
foreach ($resultado as $res) {
if( !isset( $saida[$res['email']] ) ) {
$saida[$res['email']] = array();
}
array_push( $saida[$res['email']],$res['ean'],$res['desc'],$res['email']);
}
OUT
echo"<pre>";
print_r( $saida );
echo"</pre>";
Array
(
[de@email.com] => Array
(
[0] => 1278
[1] => PROD1
[2] => de@email.com
[3] => 2342
[4] => PROD2
[5] => de@email.com
[6] => 7567
[7] => PROD3
[8] => de@email.com
)
[ma@email.com] => Array
(
[0] => 5555
[1] => PROD4
[2] => ma@email.com
[3] => 3335
[4] => PROD5
[5] => ma@email.com
)
)
PROD1 - 1278 - de@email.com
PROD2 - 2342 - de@email.com
PROD3 - 7567 - de@email.com
___________________________________
PROD4 - 5555 - ma@email.com
PROD5 - 3335 - ma@email.com
并发送电子邮件
$return = sendEmail( TO,SITE,'$mails_HERE',HOST,'[' . SITE . '] ' . $subject,$content);
解决方法
在这里您可以先过滤掉唯一的邮件,然后在数组中搜索相应的电子邮件数据。
$resultado = array(
array( 'email' => 'de@email.com','ean' => '1278','desc' => 'PROD1' ),array( 'email' => 'de@email.com','ean' => '2342','desc' => 'PROD2' ),'ean' => '7567','desc' => 'PROD3' ),array( 'email' => 'ma@email.com','ean' => '5555','desc' => 'PROD4' ),'ean' => '3335','desc' => 'PROD5' ),);
$emails = array_unique(array_column( $resultado,'email' ));
$grouped = [];
//looking for each email's corresponding data and saving it in group array
foreach ($emails as $key1 => $each ) {
foreach ($resultado as $value) {
if( $value['email'] === $each ){
unset($value['email']);
$grouped[$each][] = $value;
}
}
}
// printing the group data
foreach ($grouped as $key => $each_member ) {
foreach ($each_member as $value) {
echo"<pre>";
echo $value['desc'] . ' ' . $value['ean'] . ' ' . $key;
echo"</pre>";
}
echo '-------------------------';
}
,
您只需要对项目进行分组。
$results = array(
array( 'email' => 'de@email.com','desc' => 'PROD5' )
);
$data = [];
foreach ($results as $result) {
$data[$result['email']][] = $result;
}
就是这样。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。