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

Нет необходимости писать цикл Еогеасп самостоятельно:

//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

Вы можете сделать это в элегантной форме без Еогеасп (Demo):

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

См array_intersect_key[Docs] и array_flip[Docs]

+3

Очень приятно! Даже лучше, чем у меня. – Ariel

+1

Это замечательно! Одна линия. – Victor

+2

+1: предложили бы это решение, добавили демо и некоторые ссылки. – hakre

Смежные вопросы