比较数组并将值从一个数组替换为另一个数组

时间:2011-01-26 05:36:44

标签: php arrays

我有两个数组需要比较和替换某些值。

第一个数组看起来类似于

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

其中所有键都是从数据库中提取的猫类别ID(数组值)。

第二个数组看起来像

Array
    (
        [itemID1] => Item_cat1
        [itemID3] => Item_cat2
        [itemID4] => Item_cat3
        ...
    )

其中所有键都是商品ID,所有值都是商品类别。

我需要做的是通过第二个数组,如果第二个数组的值等于第一个数组的值,则用第一个数组中的数字键替换文本值。

类似

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

但我想创建一个新数组来保存值。数组应该看起来像

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

我在两个数组的foreach循环外部和内部尝试了几种不同的array_intersect()和array_merge()变体,但无济于事。有人有建议吗?我是否想过这个?

1 个答案:

答案 0 :(得分:3)

使用array_search()功能,下面的$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);

?>