2011-01-26 4 views
1

私は、ある値を比較して置き換える必要がある2つの配列を持っています。配列の比較とある配列から別の配列への値の置換

最初の配列は、すべてのキーがネコ(配列値)のカテゴリIDである

Array 
(
    [catID1] => Cat1 
    [catID2] => Cat2 
    [catID3] => Cat3 
    ... 
) 

と同様データベースから引き出さ見えます。

二番目の配列は

すべてのキーがアイテムIDであり、すべての値がアイテムのカテゴリです
Array 
    (
     [itemID1] => Item_cat1 
     [itemID3] => Item_cat2 
     [itemID4] => Item_cat3 
     ... 
    ) 

のように見えます。

私が行う必要があるのは、2番目の配列の値が最初の配列の値と等しい場合、2番目の配列を通り、最初の配列の数値キーでテキスト値を置き換えることです。

if(item_cat1 == cat1) 
{ 
    item_cat1 == catID1 
} 

のようなものが、私は値を保持する新しい配列を作成したいと思います。アレイは、無駄に私はarray_intersectのいくつかの異なるバリエーションを(試した

Array 
(
    [itemID1] => catID2 
    [itemID3] => catID4 
    [itemID4] => catID1 
    ... 
) 

ように見える)およびarray_merge()外との両方の配列にforeach文の内部すべきです。誰でも提案がありますか?私はこれを熟考していますか?

答えて

3

下記の機能を使用すると、$items_by_catIDは、アイテムの配列(itemID => categoryID)を提供します。

<?php 

$categories = array 
(
    1 => "Category 1", 
    2 => "Category 2", 
    3 => "Category 3" 
); 

$items = array 
(
    1 => "Category 1", 
    3 => "Category 2", 
    4 => "Category 3" 
); 

$items_by_catID = array(); 
foreach ($items as $key => $category) 
    $items_by_catID[$key] = array_search($category, $categories, true); 

?> 
関連する問題