2011-07-28 81 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