7

要点をまっすぐに...

次のような配列($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(true)の場合は、その配列からキーを取得し、に対してチェックして、からのキーからの値を持つ$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に、2番目の配列にありません。これは、最初の配列のキーを2番目の配列の値として持っていました。

私が自分自身を明確にしたことを願っています。

4

4 に答える 4

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);
});
于 2012-10-04T11:58:43.500 に答える
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;
于 2012-10-04T12:01:45.410 に答える
0
foreach($user_id_ary as $id){
   if($is_anonymous_ary[$id] == '1'){
      unset($d);
   }       
}

これが機能しない場合は、user_id_arrayの各要素を反復処理してみてください

于 2012-10-04T12:03:55.807 に答える
0
$user_id_ary = array_diff($user_id_ary, array_keys(array_filter($is_anonymous_ary)));
于 2012-10-04T21:48:25.750 に答える