2014-01-23 6 views
2

У меня есть массив в PHP $ массив, который имеет такие элементы, каксравнение двух массивов в PHP

$array['id'].. $array['name'] $array['class'] 

Я другой массив $ array1 который имеет элемент только $ array1 [ «UID»]. Я хочу сопоставить эти два массива на основе $array['id'] and $array['uid'] , так что я хочу получить элементы $ array ['id'], не равные $ array ['uid'] ` Есть ли встроенная функция в PHP, я могу сделайте это для каждого цикла с моей функцией custome, но есть ли какая-либо функция?

Input, если $ массив имеет идентификатор = 2,4,5,6 и $ массив имеет UID = 2,4, то я должен получить $ идентификатор массива = 5,6

данных в $ массив выглядит следующим образом

{ 
     "name": "abc", 
     "id": "37402526" 
    }, 
    { 
     "name": "def", 
     "id": "506768590" 
    }, 
    { 
     "name": "hij", 
     "id": "526405977" 
    } 

а $ 1 массив как этот

{ 

     "id": "37402526" 
    }, 
    { 

     "id": "506768590" 
    }, 
    { 
     " 
     "id": "526405977" 
    } 
+2

Является ли ваш массив многомерный? Можете ли вы опубликовать '' отформатированный 'print_r()' выход указанного массива? (и ожидаемый результат тоже) –

+0

in_array ($ array [id], $ array1); return true, если любые совпадения. – Florin

+0

@AmalMurali Я отредактировал вопрос .. оба являются одномерными –

ответ

0

Если вы можете переписать код, чтобы иметь идентификаторы в ключам массива, чем вы могли бы использовать array_diff_key():

$array = array(
    '12' => array('name' => 'abc'), 
    '34' => array('name' => 'def') 
); 

$array2 = array('12' => true); 

$result = array_diff_key($array, $array2); 

В противном случае вы можете использовать array_udiff():

function my_id_cmp($a, $b) { 
    return strcmp($a['id'], $b['id']); 
} 

$result = array_udiff($array, $array1, 'my_id_cmp'); 
0

Если вход только в формате, который вы использовали в качестве примера, то это просто:

$array['id'] = implode(',', array_diff(explode(',', $array['id']), explode(',', $array1['uid']))); 

С уважением.

+0

Я теряю данные в $ массиве, так как это многомерный –

+0

Этот фрагмент кода влияет только на ключ «id», поэтому данные не теряются, как вы говорите. Странный! –

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