2016-05-12 72 views
2

我有两个键值对数组,一个是原始数组,另一个是需要删除的键值对的数组。我需要删除特定的组合,即$ removeArray将包含:从PHP数组中删除特定键值对

Array([Word] => 78) 

我已经试过:

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

这并不在所有的工作。 我需要删除基于确切的键值对匹配。


编辑:

原始

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

您可以发布×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]); 
}