2016-09-23 30 views
0

我有以下2个数组变量。结合两个数组在php中的唯一情况

$a = array("triple","triple","double","single","single"); 
$b = array("444","555","33","2","3"); 

我需要转换的是2个数组为这个数组模式

$array = array(
    "triple"=>array("444","555"), 
    "double"=>array("33"), 
    "single"=>array("2","3") 
); 

,这样我可以得到这样

triple(444 | 555) double(33) single(2 | 3)

任何结果能帮助我吗?感谢

回答

1

只需使用array_combine$b作为键和$a作为价值,然后转移到一个新的集装箱用钥匙分组:

$array = array(); 
foreach(array_combine($b, $a) as $k => $v) { 
    $array[$v][] = $k; 
} 

出于列,只是implode他们:

foreach($array as $key => $numbers) { 
    $href = implode('|', $numbers); 
    $numbers = $key . '(' . implode(' | ', $numbers) . ')' . ' '; 
    echo "<a href='aaa.php?numbers=$href'>$numbers</a>"; 
} 
+0

我想问一下,我如何在implode中添加到'$ numbers'的链接? like'$numbers' –

+0

@WilliamChandra只是将它分配给一个变量 – Ghost

+0

@WilliamChandra它已经编辑了 – Ghost

0

您可以使用PHP的Array_unique ... Follow this link

并执行以下操作..

$arr = []; 
foreach($a as $value) { 

if ($value == 'tripple') { 
    foreach($b as $val) if(strlen($val) == 3) $arr[$value][] = $val; 
} 

if ($value == 'double') { 
    foreach($b as $val) if(strlen($val) == 2) $arr[$value][] = $val; 
} 

if ($value == 'single') { 
    foreach($b as $val) if(strlen($val) == 1) $arr[$value][] = $val; 
} 

} 

这应该工作...

+0

我知道如何使用'array_unique',问题是如何显示的结果如我所料,当我唯一的第一阵列? –

+0

检查上述..我已经更新了我的答案.. – victor