첫 번째와 비교할 두 번째 배열도 만들어야겠다.
후에는 물론 반복문으로 처리하겠지만 일단 다음과 같이 배열을 만들자.
$query = "SELECT distinct user_id FROM `user_data` WHERE date>='2017-02-01' and date<'2017-03-01';";
$result = mysqli_query($conn, $query);
$array_2 = array();
for($i = 0; $row = mysqli_fetch_row($result); $i = $i + 1){
$array_2[$i] = $row[0];
}
앞서 만들었던 것을 그대로 가져와 날짜를 바꾸고 결과를 $array_2에 저장하였다.
<!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title></title> </head> <body> <?php $query = "SELECT distinct user_id FROM `user_data` WHERE date>='2017-01-01' and date<'2017-02-01';"; $result = mysqli_query($conn, $query); $array_1 = array(); for($i = 0; $row = mysqli_fetch_row($result); $i = $i + 1){ $array_1[$i] = $row[0]; } $query = "SELECT distinct user_id FROM `user_data` WHERE date>='2017-02-01' and date<'2017-03-01';"; $result = mysqli_query($conn, $query); $array_2 = array(); for($i = 0; $row = mysqli_fetch_row($result); $i = $i + 1){ $array_2[$i] = $row[0]; } ?> </body> </html>
$array_1 에는 1월의 구매자 정보가, $array_2 에는 2월의 구매자 정보가 담겼다.
이제 '1월 구매자의 재구매율' 이라 하면 1월 구매자 중 몇 명이나 2월에도 구매했는지
즉 $array_1 의 요소가 몇 개나 $array_2 에 있는지를 보면 되겠다.
이럴 때 in_array() 함수가 사용된다.
in_array() 함수는 두 가지 요소를 필요로 하며 첫 번째는 찾으려는 값, 두 번째는 대상이 되는 배열을 입력해야 한다.
일단 $array_1의 첫 번째 요소가 $array_2 에 있는지 알아보자.
echo in_array($array_1[0], $array_2);
<!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title></title> </head> <body> <?php $query = "SELECT distinct user_id FROM `user_data` WHERE date>='2017-01-01' and date<'2017-02-01';"; $result = mysqli_query($conn, $query); $array_1 = array(); for($i = 0; $row = mysqli_fetch_row($result); $i = $i + 1){ $array_1[$i] = $row[0]; } $query = "SELECT distinct user_id FROM `user_data` WHERE date>='2017-02-01' and date<'2017-03-01';"; $result = mysqli_query($conn, $query); $array_2 = array(); for($i = 0; $row = mysqli_fetch_row($result); $i = $i + 1){ $array_2[$i] = $row[0]; } echo in_array($array_1[0], $array_2); ?> </body> </html>
결과는 다음과 같다.
아무것도 출력되지 않았다.
in_array() 는 질문한 결과가 있으면 1, 없으면 아무것도 출력하지 않는다.
$array_1 의 첫 번째 요소는 $array_2 에 없었다는 이야기다.
두 번째 요소는 있는지 알아보자.
echo in_array($array_1[2], $array_2);
결과는 다음과 같다.
1이 출력되었다. 있다는 이야기다.
이를 이용하여 $array_1 의 모든 요소 중 몇 개나 $array_2 에 있는지의 결과를 $value에 저장할 수 있다.
for($i = 0, $value = 0; $i < count($array_1); $i++){
$value = $value + in_array($array_1[$i], $array_2);
}
눈으로 확인하고 싶다면 반복문 안에 echo를 넣자.
<!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title></title> </head> <body> <?php $query = "SELECT distinct user_id FROM `user_data` WHERE date>='2017-01-01' and date<'2017-02-01';"; $result = mysqli_query($conn, $query); $array_1 = array(); for($i = 0; $row = mysqli_fetch_row($result); $i = $i + 1){ $array_1[$i] = $row[0]; } $query = "SELECT distinct user_id FROM `user_data` WHERE date>='2017-02-01' and date<'2017-03-01';"; $result = mysqli_query($conn, $query); $array_2 = array(); for($i = 0; $row = mysqli_fetch_row($result); $i = $i + 1){ $array_2[$i] = $row[0]; } for($i = 0, $value = 0; $i < count($array_1); $i++){ $value = $value + in_array($array_1[$i], $array_2); echo $value; } ?> </body> </html>
결과는 다음과 같다.
처음 0은 $array_1[0] 이 $array_2 에 없다는 의미이다.
그 다음은 1이므로 $array_1[1] 이 $array_2 에 있고, 2로 올라가므로 또 있고... 하는 식이다.
하여 최종적으로 $array_1 의 요소 중 29개가 $array_2 에 있다고 알려주고 있다.
이제 다음과 같이 1월 총 구매자 수, 2월 재구매자, 1월 구매자의 재 구매율을 출력할 수 있다.
echo count($array_1)," | ",$value," | ",$value/count($array_1);
<!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title></title> </head> <body> <?php $query = "SELECT distinct user_id FROM `user_data` WHERE date>='2017-01-01' and date<'2017-02-01';"; $result = mysqli_query($conn, $query); $array_1 = array(); for($i = 0; $row = mysqli_fetch_row($result); $i = $i + 1){ $array_1[$i] = $row[0]; } $query = "SELECT distinct user_id FROM `user_data` WHERE date>='2017-02-01' and date<'2017-03-01';"; $result = mysqli_query($conn, $query); $array_2 = array(); for($i = 0; $row = mysqli_fetch_row($result); $i = $i + 1){ $array_2[$i] = $row[0]; } for($i = 0, $value = 0; $i < count($array_1); $i++){ $value = $value + in_array($array_1[$i], $array_2); } echo count($array_1)," | ",$value," | ",$value/count($array_1); ?> </body> </html>
결과는 다음과 같다.
총 55명 중 29명이 재구매하였고, 재구매율은 52.7% 로 계산된다.
'PHP' 카테고리의 다른 글
[PHP] $i++ 과 ++$i 의 차이 (0) | 2018.06.21 |
---|---|
[PHP] 에러메시지 Undefined offset 의미 (0) | 2018.06.20 |
[PHP] 바이너리 서치로 인덱스 필드값 찾기 (0) | 2018.05.15 |
[PHP] 회원들의 재구매율 알아보기(4) - 완성 (0) | 2017.10.13 |
[PHP] 회원들의 재구매율 알아보기(3) - 날짜 계산하기 strtotime() (0) | 2017.09.26 |
[PHP] 회원들의 재구매율 알아보기(1) - MySQL 컬럼(열)을 배열로 만들기 (0) | 2017.09.24 |
[PHP] mysqli_fetch_row, assoc, array 의 차이 (4) | 2017.09.20 |
[PHP] DB에서 특정 행들만 가져오기(8) - DB 에서 열 이름 가져오기 (0) | 2017.09.19 |
[PHP] DB에서 특정 행들만 가져오기(7) - DB에서 가져온 정보 출력하기 mysqli_fetch_row() (0) | 2017.09.18 |
[PHP] DB에서 특정 행들만 가져오기(6) - 쿼리 작성하기 mysqli_query() (0) | 2017.09.17 |
댓글