2011-01-26 3 views
1

У меня есть два массива, которые мне нужны для сравнения и замены определенных значений.Сравнение массивов и замена значений из одного массива в другой

Первый массив похож на

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

Где все ключи находятся в категории Идентификаторы кошек (значения массива) извлекается из базы данных.

Второй массив выглядит

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

Где все ключи являются товаром идентификаторы и все значения являются товаром категории.

Что мне нужно сделать, это пройти второй массив и заменить текстовые значения цифровыми клавишами из первого массива, если значение второго значения массива равно значению первого массива.

что-то вроде

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

, но я хотел бы создать новый массив для хранения значений. массив должен выглядеть

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

Я попробовал несколько различных вариантов array_intersect() и array_merge() внутри и снаружи Еогеасп петель на обоих массивах не дало никаких результатов. У кого-нибудь есть предложение? Могу ли я это переусердствовать?

ответ

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); 

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