aborted
aborted

Reputation: 4541

Array unsetting keys

Straight to the point...

I have an array ($is_anonymous_ary) that looks like this:

array (
  [80] => 1
  [57] => 1
  [66] =>
  [60] => 
  [90] => 1
)

And another array ($user_id_ary) like this one:

array (
  [0] => 80
  [1] => 30
  [2] => 57
  [3] => 89
  [4] => 66
  [5] => 60
  [6] => 90
)

I need to unset values on the $user_id_ary based on the first array. So, if the value from $is_anonymous_ary is 1 (true), then take the key from that array, check against $user_id_ary, and unset the keys from $user_id_ary which had the value from the keys from $is_anonymous_ary.

I complicated the description a bit, here is how I need my final result:

user_id_ary = array(
  [0] => 30
  [1] => 89
  [2] => 66
  [3] => 60
)

As you see all keys from the $is_anonymous_ary that had a TRUE value, are gone in the second array. which had the keys from the first array as values in the second array.

Hope I made myself clear.

Upvotes: 7

Views: 832

Answers (4)

Vijay Verma
Vijay Verma

Reputation: 3698

How easy:)

$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;

Upvotes: 0

Slayer Birden
Slayer Birden

Reputation: 3694

$user_id_ary = array_diff($user_id_ary, array_keys(array_filter($is_anonymous_ary)));

Upvotes: 0

Misiakw
Misiakw

Reputation: 922

foreach($user_id_ary as $id){
   if($is_anonymous_ary[$id] == '1'){
      unset($d);
   }       
}

if this wont work, try to iterate thru each elem in user_id_array

Upvotes: 0

xdazz
xdazz

Reputation: 160853

Try 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);
});

Upvotes: 6

Related Questions