具有重复值的数组组合函数(保留键)

我有两个数组,代码中的一个数组表示标题(简单字符串),另一个是电子邮件(也是简单字符串)。这两个数组将始终相同,我需要创建它们的键值对。


[

    $email => $title

]

所以,我的 $email 数组如下所示:


Array

(

    [0] => test@test.com

    [1] => test@test.com

    [2] => test@test.com

)

我的 $tile 数组如下所示:


Array

(

    [0] => Distributor

    [1] => Internal

    [2] => Agency

)

所以我需要这两个数组是:


Array

(

    [test@test.com] => Distributor

    [test@test.com] => Internal

    [test@test.com] => Agency

)

一开始我使用的是 array_combine,但是当这个重复的电子邮件值发生时,我的代码坏了。在这一点上我找不到好的解决方案。我尝试使用 php 手册中的这个函数来操作数组:


function array_combine_($keys, $values)

{

    $result = array();

    foreach ($keys as $i => $k) {

        $result[$k][] = $values[$i];

    }

    array_walk($result, create_function('&$v', '$v = (count($v) == 1)? array_pop($v): $v;'));

    return    $result;

}

但它已被弃用,并且不起作用。我感谢您对此问题的任何帮助。


慕侠2389804
浏览 121回答 1
1回答

慕沐林林

关联数组中不能有多个相同的键。您可以使用值作为键和键作为值$keys = ['test@test.com','test@test.com','test@test.com'];$values = ['Distributor','Internal','Agency'];$res = array_combine($values, $keys);输出Array( [Distributor] => test@test.com [Internal] => test@test.com [Agency] => test@test.com)或者您可以添加一些内容使它们像索引号一样唯一,然后删除该索引号$keys = ['test@test.com','test@test.com','test@test.com'];$values = ['Distributor','Internal','Agency'];$res = [];array_walk($keys, function($v, $k) use ($values, &$res){  $res[$v."-".$k] = $values[$k];});输出Array( [test@test.com-0] => Distributor [test@test.com-1] => Internal [test@test.com-2] => Agency)在这里您可以删除 -Index 以使用它们。
打开App,查看更多内容
随时随地看视频慕课网APP