2011-07-28 83 views
1
数组
$arrayA = Array ( 
       [0] => 1, 
       [1] => 2, 
       [2] => 4 
       ) 

$arrayB = Array ( 
       [1] => Dog, 
       [2] => Cat, 
       [3] => Cow, 
       [4] => Duck 
       ) 

如何创建一个$arrayC这需要从上述2个数组值:创建从其他2个阵列

$arrayC = Array ( 
       [1] => Dog, 
       [2] => Cat, 
       [4] => Duck 
       ) 

从理论上说,这件事情是这样的:

$arrayC = Array ( 
       [$arrayA[0]] => $arrayB[$arrayA[0]], 
       [$arrayA[1]] => $arrayB[$arrayA[1]], 
       [$arrayA[2]] => $arrayB[$arrayA[2]] 
       ) 

谢谢。

回答

0

你可以尝试做这样的事情: -

foreach ($arrayA as $number) 
{ 
    if(isset($arrayB[$number]) 
    { 
    $arrayC[$number] = $arrayB[$number]; 
    } 
} 
2
$arrayC = array(); 
foreach ($arrayA as $key) { 
    if (isset($arrayB[$key])) { 
    $arrayC[$key] = $arrayB[$key]; 
    } 
} 
1

无需编写foreach循环自己:

//get only the keys that are in both 
$arrayA = array_intersect_key(array_fill_keys($arrayA , true), $arrayB); 
$arrayB = array_intersect_key($arrayB, $arrayA); 

//combine the arrays 
$arrayC = array_combine(array_keys($arrayA), $arrayB); 
1
foreach($arrayA as $i => $key) { 
    $arrayC[$key] = $arrayB[$arrayA[$i]]; 
} 

$arrayC将是:

Array ([1] => Dog [2] => Cat [4] => Duck) 
7

您可以在优雅的方式做到这一点没有的foreach(Demo):

$arrayC = array_intersect_key($arrayB, array_flip($arrayA)); 

array_intersect_key[Docs]array_flip[Docs]

+3

很不错的!甚至比我的还好。 – Ariel

+1

这太棒了!一条线。 – Victor

+2

+1:建议这个解决方案,以及添加演示和一些链接。 – hakre