본문 바로가기
PHP

[PHP] 회원들의 재구매율 알아보기(2) - 두 배열 비교하기 in_array()

by LightBlogger 2017. 9. 25.

첫 번째와 비교할 두 번째 배열도 만들어야겠다.


후에는 물론 반복문으로 처리하겠지만 일단 다음과 같이 배열을 만들자.


$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% 로 계산된다.




반응형

댓글