为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

PHP
慕侠2389804 2021-06-10 17:08:37
我有两个数组,代码中的一个数组表示标题(简单字符串),另一个是电子邮件(也是简单字符串)。这两个数组将始终相同,我需要创建它们的键值对。[    $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;}但它已被弃用,并且不起作用。我感谢您对此问题的任何帮助。
查看完整描述

1 回答

?
慕沐林林

TA贡献2016条经验 获得超9个赞

关联数组中不能有多个相同的键。


您可以使用值作为键和键作为值


$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 以使用它们。


查看完整回答
反对 回复 2021-06-13
  • 1 回答
  • 0 关注
  • 120 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信