2012-12-18 2 views
1

각 POST를 특정 비트 값에 바인딩하고 비트 별 숫자를 모 두 계산하는 동적 체크 박스 양식을 만들 계획입니다. 나는 좋은 방법을 생각할 수 없다. 누군가 나를 인도 할 수 있겠습니까?비트 연산자와 foreach 루프에 관한 안내

echo "<input type='checkbox' name='nums[]' value='".$perms[$field]."' />"; 

보다 후에는 가장 높은 숫자로 시작 거꾸로 가고 싶은 것 :

<html> 
<head></head> 
<body> 
<form method="post" action="test.php"/> 
<?php 

    $fields = array('writePost','readPost','deletePost','addUser', 
         'deleteUser'); 

    $perms = array(
     'writePost' => 1, 
     'readPost' => 2, 
     'deletePost' => 4, 
     'addUser' => 8, 
     'deleteUser' => 16 
); 

    $results = array(); 



    foreach($fields as $field) 
    { 
      echo "<input type='checkbox' name='".$field."' value='".$field."' />"; 
      echo "<label for='".$field."'>".$field."</label>"; 
      echo "<br/>"; 

    } 

if(isset($_POST['submit'])) 
{ 
    foreach($_POST as $posts) 
    { 
     $posts = $results; 

      // 
      $total_key = 0; 
      $array_key = 1; 

      foreach ($perms as $key) 
      { 

      if (!$key=='read') 
       { 
       $array_key = $array_key*2; 
       }else{ 
       $array_key = $array_key+$total_key; 
      } 

      foreach ($posts as $perms) 
      { 

       $array_key = $post; 
      } 

     } 
    } 

    var_dump($results); 

} 

var_dump($fields); 

?> 
<input type="text" name="name" value="name"/> 
<input type="submit" name="submit" value="submit"/> 
</form> 
</body> 
</html> 
+0

귀하의 설명이나 코드는 귀하가 여기서 달성하고자하는 바를 전혀 알려주지 않습니다. – Sammitch

답변

0

내가 대신 필드 이름의 숫자 당신의 입력 값을 원한다고 생각

$n = sizeof($perms)-1; 
$total = array_sum($_POST['nums']); 
for($i=$n;$i>0;$i--) 
{ 
    $pow = pow(2, $i); 
    if ($pow > $total) 
    { 
     //$fields[$i] is checked 
     $total-=$pow; 
    } 
} 

하지만 실제로는 확인 된 값을 배열에 넣고 PHP로 설정했는지 확인하는 것이 덜 혼란 스럽다면 할 수 있습니다.

관련 문제