로컬 데이터용 PHP로 파일 크기 계산

다음 기능은 파일이 동일한 서버 환경에 있을 때만 작동합니다.

사전 요구


  • PHP 내장 함수를 이해합니다. floatval , pow , str_replace , strvalround .
  • 생성multidimensional arrayforeach을 사용하여 배열의 항목을 호출하는 방법.
  • 만드는 방법 function .

  • 어레이 준비



    준비해야 하는 배열은 확인할 데이터의 크기를 바이트 단위로 필터링하는 데 사용되는 배열입니다.

    $arBytes = array(
                0 => array(
                    "UNIT" => "TB",
                    "VALUE" => pow(1024, 4)
                ),
                1 => array(
                    "UNIT" => "GB",
                    "VALUE" => pow(1024, 3)
                ),
                2 => array(
                    "UNIT" => "MB",
                    "VALUE" => pow(1024, 2)
                ),
                3 => array(
                    "UNIT" => "KB",
                    "VALUE" => 1024
                ),
                4 => array(
                    "UNIT" => "B",
                    "VALUE" => 1
                ),
            );
    


    다차원 배열에는 VALUE 값이 UNIT 를 나타내는 값인 여러 단위 바이트가 있음을 알 수 있습니다. 숫자 또는 사용pow 또는 지수의 형태로 직접 사용할 수 있습니다. 예를 들어 pow(1024,2)는 1024의 2승인 약 1백만을 의미합니다. 이 pow 기능을 사용하면 쓰기를 줄이는 데 도움이 됩니다.

    프로세스 데이터


    filesize() 함수로 바이트 데이터를 먼저 검색한 직후 데이터 처리를 수행할 수 있습니다. 완료되면 우리가 만든 필터 배열을 활용하여 필터를 직접 처리할 수 있습니다.

     $bytes = filesize('url_file');
     $bytes = floatval($bytes);
    
     foreach($arBytes as $arItem){
            if($bytes >= $arItem["VALUE"])
            {
                $result = $bytes / $arItem["VALUE"];
                $result = str_replace(".", "," , strval(round($result, 2)))." ".$arItem["UNIT"];
                break;
            }
        } 
    

    floatval를 사용하여 데이터가 잘 선택되고 숫자인지 확인하십시오. foreach는 필터 배열 데이터를 호출하고 그 안에 있는 if 문으로 나가는 데이터를 결정합니다. $bytes 데이터는 필터 배열의 각 VALUE 데이터와 비교되며 조건>=이 충족되면 새 데이터$bytes가 처리됩니다. 최종 결과 또는 $result를 찾는 과정은 두 단계로 수행되며 첫 번째 단계는 위의 조건에 따라 데이터를 배열 값으로 나누는 것입니다. 두 번째 단계는 처리된 값을 기준으로 UNIT를 설치하고 round 함수에 의해 반올림 처리 후 점 속성을 쉼표로 변경하는 것입니다.

    전반적으로 스크립트는 다음과 같을 수 있습니다.

      function FileSizeConvert($url){
        $bytes = filesize($url);
        $bytes = floatval($bytes);
            $arBytes = array(
                0 => array(
                    "UNIT" => "TB",
                    "VALUE" => pow(1024, 4)
                ),
                1 => array(
                    "UNIT" => "GB",
                    "VALUE" => pow(1024, 3)
                ),
                2 => array(
                    "UNIT" => "MB",
                    "VALUE" => pow(1024, 2)
                ),
                3 => array(
                    "UNIT" => "KB",
                    "VALUE" => 1024
                ),
                4 => array(
                    "UNIT" => "B",
                    "VALUE" => 1
                ),
            );
    
        foreach($arBytes as $arItem){
            if($bytes >= $arItem["VALUE"])
            {
                $result = $bytes / $arItem["VALUE"];
                $result = str_replace(".", "," , strval(round($result, 2)))." ".$arItem["UNIT"];
                break;
            }
        }
        return $result;
      }
    


    완료

    좋은 웹페이지 즐겨찾기