2012-10-04 3 views
7

... :배열 설정 해제 키 스트레이트 포인트

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을 확인하고 키의 값이 $is_anonymous_ary$user_id_ary의 키를 설정 해제하십시오.

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

당신이 TRUE 값을했다 $is_anonymous_ary에서 모든 키를 보듯이

가, 두 번째 배열에 사라 :

나는 여기에 내 최종 결과를 필요로하는 방법이다, 설명을 조금 복잡합니다. 첫 번째 배열의 키가 두 번째 배열의 값으로 사용되었습니다.

희망 나는 나 자신을 분명히했다.

+0

'==='1을 기반으로 제거하기 위해 간단한 루프 기반 교차로이 작업을 수행 할 수 없습니까? – Sammaye

+1

나는이 질문을 모른다. – Aborted

답변

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

좋아요! 그래서 진짜 전문가가 있습니다. – Dev

+0

왜 반환합니까? 나는 함수 안에서 일하고 있지 않다! 코드가하는 일을 설명 할 수 있습니까? – Aborted

+0

@Dugi 설명서를 확인 했습니까? 콜백 반환 false 요소가 제거됩니다. – xdazz

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; 
+0

$ user_id_ary는 변수 이름으로 계속 사용해야합니다. 왜냐하면 한 번에 여러 곳에서 사용되기 때문입니다. 내 현재 $ user_id_ary를 제거하지 못하는 제안은 무엇입니까? – Aborted

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

이 늘 작품은, user_id_array 각 ELEM 통해 반복하려고하면

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