【发布时间】:2019-01-30 15:57:12
【问题描述】:
我想显示所有类别,并且我想将选定的属性设置为多个复选框。
<div class="col-md-10">
<?php
$allCategories = $category->getAllCategory();
if ($allCategories) {
$categoryAccess = $category_permitted->getCategoriesByUserId($user_info[0]->id);
foreach ($allCategories as $key => $items) {
if ($categoryAccess) {
foreach ($categoryAccess as $key => $value) {
?>
<input type="checkbox" name="cat_access[]" value=" <?php echo $items->id ?> " <?php echo (isset($categoryAccess) && @$categoryAccess[$key]->id == $items->id) ? 'checked' : '' ?>><?php echo $items->title?>
<?php
}
}
?>
<?php
}
}
?>
</div>
循环通过$categoryAccess 后,我选择了两个选项,但我让所有类别重复两次作为输出,即 category1 类别 1 类别 2 类别 3 类别 3 类别 4 类别 4。
我有 4 个具有复选框的类别,对于输出,应选中其中的 2 个类别。我在<?php echo (isset($categoryAccess) && $categoryAccess->id == $items->id) ? 'selected' : '' ?> 中遇到错误,它给出了这个错误:尝试获取非对象的属性“id”,当我做<?php echo (isset($categoryAccess) && $categoryAccess[0]->id == $items->id) ? 'selected' : '' ?> 时,它给出了数据,但只有 0 索引。
var_dump($categoryAccess):
array(2)
{
[0]=> object(stdClass)#6 (3)
{
["id"]=> string(1) "1"
["user_id"]=> string(1) "2"
["title"]=> string(25) "category1"
}
[1]=> object(stdClass)#20 (3)
{
["id"]=> string(1) "3"
["user_id"]=> string(1) "2"
["title"]=> string(18) "category2"
}
}
【问题讨论】:
-
请
var_dump($categoryAccess);的结果 -
制作一个 $categoryAccess 的 var_dump 以查看您实际处理的内容。
-
$categoryAccess是一个数组,您不能使用对象运算符->访问它的属性。您应该遍历$categoryAccess以访问其对象 -
除了你的错误,你真的应该在循环之外调用
getCategoriesByUserId(),而不是在循环内部,因为它不依赖于$items。当您每次都将获得相同的结果时,没有理由每次都浪费资源/时间调用它。 -
@PatrickQ 我已经更正了我的代码。