현재 위치: > 최신 기사 목록> Bindec ()을 사용하여 스토리지의 이진 번호로 확인란 양식을 변환하는 방법?

Bindec ()을 사용하여 스토리지의 이진 번호로 확인란 양식을 변환하는 방법?

M66 2025-06-11

여러 확인란 옵션이있는 양식으로 작업 할 때 일반적인 문제는 사용자 선택을 효율적으로 저장하는 방법입니다. 전통적인 방법은 배열 또는 쉼표로 구분 된 문자열을 사용하는 것이지만, 이러한 방법은 쿼리 및 저장할 때 충분히 효율적이지 않습니다. 이 기사에서는 PHP의 bindec () 함수를 사용하여 확인란의 선택 결과를 스토리지의 이진 번호로 변환하여 데이터 관리를 단순화하는 방법을 설명합니다.

사용 시나리오의 예

예를 들어 사용자가 관심있는 콘텐츠 범주를 선택할 수있는 양식이 있다고 가정합니다.

  • 기술 (가치는 1)

  • 스포츠 (가치는 2)

  • 음악 (가치는 3)

  • 게임 (값은 4)

  • 영화 (가치는 5)

HTML 양식 코드는 다음과 같습니다.

 <form method="post" action="https://m66.net/submit.php">
  <input type="checkbox" name="interests[]" value="0"> 과학 기술<br>
  <input type="checkbox" name="interests[]" value="1"> 체육<br>
  <input type="checkbox" name="interests[]" value="2"> 음악<br>
  <input type="checkbox" name="interests[]" value="3"> 게임<br>
  <input type="checkbox" name="interests[]" value="4"> 영화<br>
  <input type="submit" value="제출하다">
</form>

여기서 각 확인란의 값은 이진 비트의 위치에 해당합니다.

백엔드 처리 로직

양식이 제출 된 후, 우리의 목표는 사용자가 선택한 확인란을 소수 정수로 변환하여 데이터베이스에 저장하는 것입니다. 이것의 장점은 빠른 쿼리를 가지고 있으며 저장 공간을 저장한다는 것입니다.

예를 들어, 사용자가 "기술"및 "음악"을 점검하면, 즉 0 번째 및 2 번째 비트를 확인하면, 얻은 이진 문자열은 10100 (높음에서 낮은 비트로 보면)이며 소수 로 변환됩니다.

PHP 코드 예 :

 <?php
if ($_SERVER['REQUEST_METHOD'] === 'POST') {
    $interests = isset($_POST['interests']) ? $_POST['interests'] : [];
    
    // 이진 비트 어레이를 초기화합니다
    $bits = array_fill(0, 5, '0');

    foreach ($interests as $index) {
        if (is_numeric($index) && $index >= 0 && $index < 5) {
            $bits[(int)$index] = '1';
        }
    }

    // 비트 배열을 반전시킵니다(앞에서 높습니다),이진 문자열로 변환합니다
    $binary_string = implode('', array_reverse($bits));

    // 사용 bindec() 소수 정수로 변환하십시오
    $interest_value = bindec($binary_string);

    // 결과를 출력하거나 데이터베이스에 저장합니다
    echo "이진 문자열: $binary_string<br>";
    echo "소수점 저장된 값: $interest_value<br>";

    // 데이터베이스에 저장된 논리는 자체적으로 확장 될 수 있습니다.
}
?>

저장 및 독서

데이터베이스에서는이 값을 저장하기 위해 int (11) 와 같은 정수 유형 필드 만 만들면됩니다. 사용자 관심사를 읽어야 할 때는 PHP의 decbin () 함수 만 사용하여 바이너리 문자열로 다시 변환하고 문자열을 통해 사용자 선택 항목을 구문 분석하면됩니다.

 <?php
$stored_value = 20; // 예제 값
$binary = str_pad(decbin($stored_value), 5, '0', STR_PAD_LEFT);
$binary_array = array_reverse(str_split($binary));

foreach ($binary_array as $index => $bit) {
    if ($bit === '1') {
        echo "사용자는 숫자를 선택했습니다 $index 옵션<br>";
    }
}
?>

요약

bindec ()decbin ()을 사용하면 여러 확인란의 선택 결과를 정수로 효율적으로 압축 할 수 있습니다. 이 방법은 데이터베이스의 복잡성을 줄일뿐만 아니라 쿼리 속도를 높이며, 이는 사용자 기본 설정을 자주 읽고 필터링 해야하는 응용 프로그램 시나리오에 특히 적합합니다. 확인란 선택을 관리하는 방법이 걱정되면이 방법을 사용해보십시오.