Array unlock keys

Right 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 ) similar to this:

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

I need to disable the values ​​in $user_id_ary based on the first array. So, if the value from $is_anonymous_ary is 1 (true), then take the key from this array, check the $user_id_ary and cancel the keys from $user_id_ary , which had the value from the keys from $is_anonymous_ary .

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

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

As you can see, all the keys from $is_anonymous_ary that have the value TRUE have disappeared in the second array. which had the keys to the first array as values ​​in the second array.

I hope I get it.

+7
source share
4 answers

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); }); 
+6
source

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; 
0
source
 foreach($user_id_ary as $id){ if($is_anonymous_ary[$id] == '1'){ unset($d); } } 

if this does not work, try iterating through each element in user_id_array

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

All Articles