数组取消设置键

时间:2012-10-04 11:54:23

标签: php arrays

直截了当......

我有一个如下所示的数组($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值的所有键在第二个数组中消失时。它将第一个数组中的键作为第二个数组中的值。

希望我能说清楚。

4 个答案:

答案 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)));