我有以下2个阵列
$Name = Array
(
[0] => A
[1] => B
[2] => C
[3] => D
)
$zip = Array
(
[0] => 411023
[1] => 411045
[2] => 411051
[3] => 411023
)
最终数组应该是这样的
$final = Array
(
411045 => B
411051 => C
411023 => A B
)
希望你们明白我的意思。
答案 0 :(得分:1)
$name = array ('A', 'B', 'C', 'D');
$zip = array (411023, 411045, 411051, 411023);
$final = array ();
for ($i = 0; $i < sizeof ($zip); $i++)
{
$n = $name [$i];
$z = $zip [$i];
if (!array_key_exists ($z, $final))
$final [$z] = array ();
$final [$z][] = $n;
}
print_r ($final);
答案 1 :(得分:1)
您正在寻找phps array_keys()
函数的第二个用例,您可以在其中指定值范围。使用它你可以简单地迭代第二个数组:
$final=array();
foreach ($zip as $key=>$anchor) {
if (! array_key_exists($final,$key))
$final[$key]=array();
$final[$key][]=array_keys($name,$anchor);
}
这会生成一个结果$final
,其中每个元素都是一个数组,很可能是你想要的。人们也可以解释你的问题,好像你要求一个空格分隔的字符串,在这种情况下,只需另外转换结果数组:
foreach ($final as $key=>$val)
$final[$key]=implode(' ',$val);
答案 2 :(得分:1)
这是另一种解决方案:
<?php
$Name = Array('A','B','C','D');
$zip = Array(411023,411045,411051,411023);
$namezip = array_combine($Name,$zip);
$res = array();
foreach($namezip as $nam=>$zp){
if(array_key_exists($zp,$res)){
$res[$zp] .= " ".$nam;
}
else{
$res[$zp] = $nam;
}
}
echo "<pre>";
print_r($res);
?>