簡體   English   中英

組成多個選擇字段的數組

[英]Make an array of the multiple select fields

我正在一個項目中,我必須制作一個用戶角色系統。它幾乎完成了,但是最后我必須在數據庫中添加路由和用戶權限,所以我得到了一個數組

[route] => Array
    (
        [0] => api/user
        [1] => members
    )

[assess] => Array
    (
        [0] => read
        [1] => write
        [2] => read
        [3] => delete
    )

但是我需要的是像

[0](
    [route] => Array
        (
            [0] => api/user
        )
    [assess] => Array
        (
            [0] => read
            [1] => write
        )
)
[1](
    [route] => Array
        (
            [0] => members
        )
    [assess] => Array
        (
            [0] => read
        )
);

這是我的HTML代碼:

<tbody class="tbody">
    <tr class="gradeX">
      <td>
      <select name="route[]">
        <?php $routeCollection = Route::getRoutes();
          foreach ($routeCollection as $value) {
              echo '<option value="'.$value->getPath().'">'.$value->getPath().'</option>';
          } ?>
        </select>
        </td>
        <td><input type="checkbox" value="read" name="check[]"></td>
        <td><input type="checkbox" value="write" name="check[]"></td>
        <td><input type="checkbox" value="delete" name="check[]"></td>
        <td><a href="javascript:;" style="padding: 3px 9px;" class="remove">Delete</a></td>
        <div class="add-row" style="float: right;border: 1px dashed grey;border-radius:5px;border-bottom: 0px;">
            <a href="javascript:;" style="padding: 3px 9px;"><span class="add">Add New</span></a>
        </div>
    </tr>
  </tbody>

由於只有選中的復選框會在表單提交時提交,並且要將您的復選框鏈接到您的選擇,因此請為所有名稱數組屬性添加key -

<tbody class="tbody">
    <tr class="gradeX">
      <td>
      <select name="route[0]">
        <?php $routeCollection = Route::getRoutes();
          foreach ($routeCollection as $value) {
              echo '<option value="'.$value->getPath().'">'.$value->getPath().'</option>';
          } ?>
        </select>
        </td>
        <td><input type="checkbox" value="read" name="check[0][]"></td>
        <td><input type="checkbox" value="write" name="check[0][]"></td>
        <td><input type="checkbox" value="delete" name="check[0][]"></td>
        <td><a href="javascript:;" style="padding: 3px 9px;" class="remove">Delete</a></td>
        <div class="add-row" style="float: right;border: 1px dashed grey;border-radius:5px;border-bottom: 0px;">
            <a href="javascript:;" style="padding: 3px 9px;"><span class="add">Add New</span></a>
        </div>
    </tr>
  </tbody>

您需要增加javascript代碼中的“添加新內容”鍵,才能正常工作

然后在php中,您可以使用key進行鏈接來遍歷您的值,即。

$array = [];
foreach($_POST['route'] as $key => $value){
    $array[] = array("route" => array($_POST['route'][$key]), // this is the route value, ie. api/user or members
                     "assess" => array($_POST['check'][$key]) //this is the check array, ie. read, write or read
               );
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM