Language

간단하지만 약간의 고민이 필요했던 ...

Stella Lucete 2023. 1. 25.
728x90
반응형

해당 블로그는 해킹 및 보안 블로그로 공부 및 연구용으로 작성되어지고 있습니다. 아래의 내용을 기반으로 해킹 시도 및 실제 공격을 시도하여 일어나는 모든 책임은 본인(따라한자)에게 있음을 알려드리며, 글쓴이는 아무런 책임을 지지 않습니다. 꼭 공부 및 연구용으로만 사용하여 주시길 바랍니다. 감사합니다.

업무를 하면서 php를 사용함에 있어 한가지 고민을 한것이 있었다.

사실 간단한거였지만 왜 그 생각을 못했을까라고 생각을 한거였다. 바로 코드를 한번 보자

<?php
function count_lines($file)
  {
      $data = fopen( $file, "r" );
      $count = 0;
       while(fgets($data))
      {
          $count++;
      }
      fclose($data);
      return $count;
  }
  $file='./result.txt';
  $count = count_lines($file);
?>

해당 코드는 보면 알듯이 파일을 열어서 확인하고 라인 수를 따지는 코드이다.

그래프에 값을 넣기위해선 int형이 되야한다. 라인수는 당연하게 int형으로 선언이 된다.

 

만약에 txt파일안에 숫자가 들어있다라고 하고 그 숫자를 그래프에 반영해야한다면?

말그대로 저코드는 라인수를 읽어서 반영하는 것이다.

 

그래서 임의로 코드를 변경하여 보니 그래프에 반영이 안되었다.

왜 그럴까 이유를 생각했는데... 코드가 잘못된것인줄 았았는데... 참 멍청했던게 여기서 시작된다.

python에서는 type을 그렇게 잘쓰는데 php에서는 생각을 못했던 것이다.

txt 파일을 읽어서 123이라는 값을 type을 확인하기위해 gettype이라는 함수를 사용하면 php에서도 변수 type을 확인할수 있다. 

여기서 답을 확인 할수있었다. 바로 stringboolean이라는 type이 반환되었다.

그래서 아래처럼 코드를 변경해보았다.

 <?php
 function count_lines($file)
  {
        $data = fopen( $file, 'r' );
        $count = 0;
        $count = (int)fgets($data);
        fclose($data);
        return $count;
}
  $file='./result.txt';
  $count = count_lines($file);
  ?>

$count를 0으로 선언해두고 (int)를 통하여 정수형으로 변형을 시키고 반환하니 정상적으로 반영되는 것을 확인 할 수있었다.

사실 큰것은 아니지만 혹시모를 일들과 나와 같은 고민을 하고 있을 분들을 위해 작성해본다.

728x90
반응형

댓글0