从PHP数组中删除特定键值对

pho*_*ode 2 php arrays

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

Array([Word] => 78)
Run Code Online (Sandbox Code Playgroud)

我试过了:

foreach($removeArray as $key => $value){unset($originalArray[$key][$value]);}
Run Code Online (Sandbox Code Playgroud)

这根本不起作用.我需要根据精确的键值对匹配删除.


编辑:

原版的

Array ( [distribution] => 25 [watch] => 25 [electricity] => 25 [timepiece] => 8 [wristwatch] => 25 [energy] => 8 [transmission] => 8 [clock] => 16 ) 
Run Code Online (Sandbox Code Playgroud)

去掉

Array ( [timepiece] => 8 [energy] => 8 [watch] => 17 ) 
Run Code Online (Sandbox Code Playgroud)

结果

Array ( [distribution] => 25 [watch] => 25 [electricity] => 25 [wristwatch] => 25  [transmission] => 8 [clock] => 16 ) 
Run Code Online (Sandbox Code Playgroud)

注意:

[watch] => 25 不受影响,因为它不等于 [watch] => 17

jer*_*oen 5

您可以使用array_diff_assoc()它来比较值和键:

$result = array_diff_assoc($original, $to_remove);
Run Code Online (Sandbox Code Playgroud)

示例代码:

$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);
Run Code Online (Sandbox Code Playgroud)

结果:

Array
(
    [lorem] => 2343
    [ipsum] => 433
    [word] => 78
)
Run Code Online (Sandbox Code Playgroud)