여러 확인란 옵션이있는 양식으로 작업 할 때 일반적인 문제는 사용자 선택을 효율적으로 저장하는 방법입니다. 전통적인 방법은 배열 또는 쉼표로 구분 된 문자열을 사용하는 것이지만, 이러한 방법은 쿼리 및 저장할 때 충분히 효율적이지 않습니다. 이 기사에서는 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
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 ()을 사용하면 여러 확인란의 선택 결과를 정수로 효율적으로 압축 할 수 있습니다. 이 방법은 데이터베이스의 복잡성을 줄일뿐만 아니라 쿼리 속도를 높이며, 이는 사용자 기본 설정을 자주 읽고 필터링 해야하는 응용 프로그램 시나리오에 특히 적합합니다. 확인란 선택을 관리하는 방법이 걱정되면이 방법을 사용해보십시오.