Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/251.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 基于名称和操作的带有复选框的组权限列表_Php_Html Table_Grouping - Fatal编程技术网

Php 基于名称和操作的带有复选框的组权限列表

Php 基于名称和操作的带有复选框的组权限列表,php,html-table,grouping,Php,Html Table,Grouping,我在mysql上拥有一组数据权限: |=====================|==================| | name | action | |=====================|==================| | setting | add | |---------------------|------------------| | setting

我在mysql上拥有一组数据权限:

|=====================|==================|
|      name           |        action    |
|=====================|==================|
|     setting         |         add      |
|---------------------|------------------|
|     setting         |         view     |
|---------------------|------------------|
|     setting         |         delete   |
|---------------------|------------------|
|     task            |         add      |
|---------------------|------------------|
|     task            |         delete   |
|---------------------|------------------|
|     report          |         view     |
|---------------------|------------------|
我想在表上显示权限,如下例所示:

|=====================|======================|
|      permission     |  add | view | delete |
|=====================|======================|
|     setting         |  []  |  []  |   []   |
|---------------------|----------------------|
|     task            |  []  |      |   []   |
|---------------------|----------------------|
|     report          |      |  []  |        |
|---------------------|----------------------|
按名称对每一行进行分组,仅显示复选框,其中操作与列标题相同,下面是迄今为止我的代码,但即使操作与列标题不同,它仍会显示复选框

<table>
<thead>
  <tr>
    <th>add</th>
    <th>view</th>
    <th>delete</th>
  </tr>
</thead> 
<tbody>
<?php
$permissionTitles = array();
foreach($permissions as $permission){
    $permissionTitles[] = $permission['name'];
}
foreach(array_unique($permissionTitles) as $permissionTitle){
  echo "<tr>";
  echo "<td>".$permissionTitle."</td>";
  foreach($permissions as $permission){
    if($permission['name'] == $permissionTitle) {
        echo "<td><input type='checkbox' value=".$permission['value']."> 
        </td>";
    }
  }
  echo "</tr>";
}
?>
</tbody>
</table>

非常感谢您的帮助。

鉴于您当前的设置和更改,我将以以下方式提供帮助:

foreach(array_unique($permissionTitles) as $permissionTitle){
  echo "<tr>";
  echo "<td>".$permissionTitle."</td>";
  foreach($permissions as $permission){
    if($permission['name'] == $permissionTitle) {
        echo "<td><input type='checkbox' value=".$permission['value']."> 
        </td>";
    }
  }
  echo "</tr>";
}
foreach(数组_唯一($permissionTitle)作为$permissionTitle){
回声“;
回显“$permissionTitle.”;
foreach($permissions作为$permission){
如果($permission['name']==$permissionTitle){
回声“
";
}
}
回声“;
}
致:

foreach(数组_唯一($permissionTitle)作为$permissionTitle){
回声“;
回显“$permissionTitle.”;
$add=false;
$view=false;
$delete=false;
foreach($permissions作为$permission){
如果($permission['name']==$permissionTitle){
如果($permission['action']=='add'){
$add=true;
}
else if($permission['action']=='view'){
$view=true;
}
else if($permission['action']=='delete'){
$delete=true;
}
}
}
回声“;
回声“;
回声“;
回声“;
}

我不太清楚PHP变量是如何设置的,但在执行以下操作的if语句之后是否需要一个else语句:echo“”?hi@Rumple谢谢您的评论,我添加了$permissions值,它是一个数组。我是否应该将else语句添加为just empty?是的,这就是您所需要的。顺便说一句,第一个循环可以替换为
permissionTitles=array_unique(array_列($permissions,'name'))
我认为@Barmar不应该只使用else语句,因为他循环了所有权限。感谢@Rumple,我将$add=false更改为$add=“disabled”,并将td更改为,这样它将禁用复选框,而不是隐藏复选框
foreach(array_unique($permissionTitles) as $permissionTitle){
  echo "<tr>";
  echo "<td>".$permissionTitle."</td>";
  foreach($permissions as $permission){
    if($permission['name'] == $permissionTitle) {
        echo "<td><input type='checkbox' value=".$permission['value']."> 
        </td>";
    }
  }
  echo "</tr>";
}
foreach(array_unique($permissionTitles) as $permissionTitle){
  echo "<tr>";
  echo "<td>".$permissionTitle."</td>";

  $add = false;
  $view = false;
  $delete = false;

  foreach($permissions as $permission){
    if($permission['name'] == $permissionTitle) {
        if($permission['action'] == 'add'){
            $add = true;
        }
        else if($permission['action'] == 'view'){
            $view = true;
        }
        else if($permission['action'] == 'delete'){
            $delete = true;
        }
    }
  }

  echo "<td><input type='checkbox' value=".$permission['value']." checked=".$add."></td>";
  echo "<td><input type='checkbox' value=".$permission['value']." checked=".$view."></td>";
  echo "<td><input type='checkbox' value=".$permission['value']." checked=".$delete."></td>";
  echo "</tr>";
}