直截了当......
我有一个如下所示的数组($is_anonymous_ary
):
array (
[80] => 1
[57] => 1
[66] =>
[60] =>
[90] => 1
)
另一个数组($user_id_ary
)就像这样:
array (
[0] => 80
[1] => 30
[2] => 57
[3] => 89
[4] => 66
[5] => 60
[6] => 90
)
我需要根据第一个数组取消$user_id_ary
上的值。因此,如果$is_anonymous_ary
的值为1(真),则从该数组中取出密钥,检查$user_id_ary
,并取消设置$user_id_ary
中具有键值的键来自$is_anonymous_ary
。
我稍微复杂了一下描述,这是我需要的最终结果:
user_id_ary = array(
[0] => 30
[1] => 89
[2] => 66
[3] => 60
)
当您看到$is_anonymous_ary
中具有TRUE
值的所有键在第二个数组中消失时。它将第一个数组中的键作为第二个数组中的值。
希望我能说清楚。
答案 0 :(得分:6)
尝试 array_filter :
$user_id_ary = array_filter($user_id_ary, function($var) use ($is_anonymous_ary) {
return !(isset($is_anonymous_ary[$var]) && $is_anonymous_ary[$var] === 1);
});
答案 1 :(得分:0)
多么容易:)
$new_array =NULL;
foreach($is_anonymous_ary as $key=>$value){
$new_array[] = array_search($key, $user_id_ary);
unset($is_anonymous_ary[$key]);
}
$user_id_ary = $new_array;
答案 2 :(得分:0)
foreach($user_id_ary as $id){
if($is_anonymous_ary[$id] == '1'){
unset($d);
}
}
如果这不起作用,请尝试通过user_id_array
中的每个元素进行迭代答案 3 :(得分:0)
$user_id_ary = array_diff($user_id_ary, array_keys(array_filter($is_anonymous_ary)));