조건에 맞는 배열 값의 개수 구하기?

조건에 맞는 배열 값의 개수 구하기?

QA

조건에 맞는 배열 값의 개수 구하기?

본문

오늘도 도움을 청해봅니다. ㅜ.ㅜ;;

 

세 개의 변수가 아래와 같은 배열값을 가지고 있습니다.

- $wr_1 : [1],[2]

- $wr_2 : [1],[2],[3],[4],[5]

- $wr_3 : [1],[2],[3],[4],[5]

 

이때 $wr_1[1], $wr_2[1]의 값을 가지는 $wr_3[1]의 갯수를 구하고 싶은데요..

 

어떤식으로 코딩을 해야할까요? 혹 참고할 만한 내용이 있으면 공유 좀 부탁드리겠습니다.

 

이 질문에 댓글 쓰기 :

답변 4

$a = array_intersect($wr_1[1],$wr_3[1]); // $wr_1[1]과 $wr_3[1] 배열의 중복값만

$b = array_intersect($wr_2[1],$a) // $wr_2[1] 과 위에서 구한 $a의 중복값만.

$cnt = count($b)

 

메이드 님 안녕하세요? ^-^
좋은 코드 올려주셔서 감사드립니다!

그런데 PHP의 array_intersect는 단순히 교집합 값을 반환하는 것이 아니라
첫번째 파라미터의 배열의 요소와 두번째 파라미터의 배열의 요소를 차례대로 비교하는 방식이기 때문에,
주어진 배열에 처음부터 중복값이 들어가 있으면
최종적으로 중복된 값이 반환되어 count되는 문제가 발생하지 않을까요?
https://www.php.net/manual/en/function.array-intersect.php#92900
("If there are duplicates in the first array, all matching duplicates will be returned.")

예컨대 초기값이 (1, 2, 2), (1, 2), (1, 2)인 경우에
차례대로 두 번 array_intersect()하는 과정에서 한 번이라도 (1, 2, 2)가 앞에 놓이면
최종값은 (1, 2, 2)가 되므로 count는 3이 될 것입니다.

제 생각으로는 올려주신 소스에 array_unique() 함수를 추가하는 것이 어떨까 여쭤봅니다 :)
그럼 편안한 저녁 되세요 ^^

남이 알아먹을 수있는 질문이 아닙니다

$wr_1[1]= 어떤 값인지

$wr_2[1] = 어떤 값인지

$wr_3[1] = 값이 어떤 모양으로 들어 있는지 실제 사용하는 값을 넣어서 질문하면 금방 알아먹을 텐데

위 질문으로는 제대로 이해할 수 있는 사람이 없으리라 생각됩니다

 

 

- $wr_1 : 1,2
- $wr_2 : 1,2,3,4,5
- $wr_3 : 1,2,3,4,5

이때 $wr_1[1], $wr_2[1]의 값을 가지는 $wr_3[1]의 갯수를 구하고 싶은데요..

==

전반적인 컨텍스를 알면 이해하기 좋겠습니다.

질문이 좀 애매하네요 

적어주신 샘플 데이터를 기준으로 봤을때

wr_3 의 특정값의 갯수를 가져오고 싶은거는 이해했습니다

 

배열에서 값을 카운트 하기 위해서는

array_count_values

를 사용하시면 됩니다

 


$arr = [1, 'hello', 1, 'world', 'hello'];
print_r(array_count_values($arr));
/* Array( [1] => 2 [hello] => 2 [world] => 1 ) */

이런식으로 나옵니다 

 

근데 조건을 거신것이 

$wr_1[1], $wr_2[1]의 값을 가지는 이라고 했는데 

위샘플에서 wr_1[1] 은 2 이고 wr_2[1] 도 2입니다

그럼 wr_3 을 값을 구하는 조건이 wr_3 배열에서 값이 2인것을 구한다는 얘기인지 이해가 안됩니다

 

wr_1 의 1번째 배열값과 wr_2 의 1번째 배열값이 다를수있으므로

조건이 and 인지 각각 구하는것인지를 먼저 정리하셔야 하고요 

 

여하튼 조건 정리를 다시하시고 

해당 value 는 array_count_values 로 사용해서 가져오시면 될꺼같습니다

답변을 작성하시기 전에 로그인 해주세요.
전체 123,517 | RSS
QA 내용 검색

회원로그인

(주)에스아이알소프트 / 대표:홍석명 / (06211) 서울특별시 강남구 역삼동 707-34 한신인터밸리24 서관 1404호 / E-Mail: admin@sir.kr
사업자등록번호: 217-81-36347 / 통신판매업신고번호:2014-서울강남-02098호 / 개인정보보호책임자:김민섭(minsup@sir.kr)
© SIRSOFT