2016-05-12 2 views
2

У меня есть два массива пары значений, один из них - оригинал, а другой - пары пар ключей, которые необходимо удалить. Мне нужно удалить определенную комбинацию, то есть $ removeArray будет содержать:Удалить определенную пару ключевых значений из массива PHP

Array([Word] => 78) 

Я пробовал:

foreach($removeArray as $key => $value){unset($originalArray[$key][$value]);} 

Это не работает. Мне нужно удалить, основываясь на точном совпадении пары значений.


EDIT:

Оригинал

Array ([distribution] => 25 [watch] => 25 [electricity] => 25 [timepiece] => 8 [wristwatch] => 25 [energy] => 8 [transmission] => 8 [clock] => 16) 

Удалить

Array ([timepiece] => 8 [energy] => 8 [watch] => 17) 

Результат

Array ([distribution] => 25 [watch] => 25 [electricity] => 25 [wristwatch] => 25 [transmission] => 8 [clock] => 16) 

Примечание:

[watch] => 25 не влияет, потому что она не равна [watch] => 17

+2

Вы можете разместить два массива и ожидаемый результат? –

+0

if ($ key == "Word") {unset ($ originalArray [$ key] [$ value]);} – Poria

+0

Добавлено пример массивов. – photocode

ответ

5

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

$result = array_diff_assoc($original, $to_remove); 

Пример кода:

$removeArray = array(
    'word'=>45, 
    'number'=>112, 
    'sign'=>2167 
); 

$originalArray = array(
    'lorem'=>2343, 
    'ipsum'=>433, 
    'word'=>78, 
    'number'=>112, 
    'sign'=>2167 
); 

$result = array_diff_assoc($originalArray, $removeArray); 

Результат:

Array 
(
    [lorem] => 2343 
    [ipsum] => 433 
    [word] => 78 
) 
+0

Бинго! Не уверен, насколько он эффективен, но это самый простой ответ. Благодаря! :) – photocode

1

попробовать это

foreach($removeArray as $key => $value){ 
    if($value==$originalArray[$key]) 
     unset($originalArray[$key]); 
} 
0

Вы можете проверить, как:

if($originalArray[$key] == "78" && $key = "Word") { 
unset($originalArray[$key]); 
} 
Смежные вопросы