2011-01-13 8 views
3

私は結合したい配列が2つあります。私は、最初の配列から値を取得し、2番目の配列から一致させるためのキーとしてこれらの値を使用し、それらを3番目の配列(私が使用する配列)に結合する必要があります。言い換えればPHP、最初の配列の値をキーとして2つの配列を新しい配列に結合する

、私はこの最初の配列を持っている:

Array 
(
[24] => 5 
[26] => 4 
[27] => 2 
) 

二番目の配列私が持っている:

Array 
(
[1] => McDonalds 
[2] => Burger King 
[3] => Wendys 
[4] => Taco Bell 
[5] => Hardees 
) 

そして最後に、これは私が持っているしたいアレイは、次のとおりです。

Array 
(
[5] => Hardees 
[4] => Taco Bell 
[2] => Burger King 
) 

私は十分に簡単ですが、私はそれを把握していないようです。 array_intersect_keyのような、さまざまな配列関数を試しました。ここで

答えて

7

は簡単imperativeソリューションです:

$combined = array(); 

foreach ($array1 as $v) { 
    if (isset($array2[$v])) { 
     $combined[$v] = $array2[$v]; 
    } 
} 

そしてfunctionalソリューション:

// Note that elements of $combined will retain the order of $array2, not $array1 
$combined = array_intersect_key($array2, array_flip($array1)); 
+0

+1、彼の質問のタイトルはarray_combineについて私を混乱させました。いいですよ。 – jasonbar

+0

パーフェクト。どうもありがとうございます! – Michael

+0

@マイケル:どうぞよろしく! – BoltClock

-1

array_keysは、最初の引数は、あなたのファーストフードレストランの配列でネイティブに何をしたい

ん、2番目の引数は最初に与えた配列です(必要なキー)

例えば:

$array = array_keys(array(0 => 'McDonalds', 1 => 'BurgerKing', 2 => 'Taco Bell'), 
    array(0 => 1)); 
$array will only have BurgerKing in it 
ちょうど1行で
+0

$ array = array_keys($ theKeys、$ fastFood); //空の配列が返されました。この形式は間違っていますか? – Michael

+0

間違った注文、ファーストフード、キース –

1
$result = array(); 
foreach (array_flip($keys) as $k) { 
    $result[$k] = $values[$k]; 
} 
0

foreach ($a as $v) $c[$v]=$b[$v]; 

参照:

$a=array(24=>5,26=>4,27=>2); 
$b=array(1=>'McDonalds',2=>'Burger King',3=>'Wendys',4=>'Taco Bell',5=>'Hardees'); 

foreach ($a as $v) $c[$v]=$b[$v]; 

print_r($c); 

それが返されます。

Array 
(
    [5] => Hardees 
    [4] => Taco Bell 
    [2] => Burger King 
) 
関連する問題