[英]How to set selected properties in multiple checkboxes with foreach loop in PHP?
我想顯示所有類別,並且要將選定的屬性設置為多個復選框。
<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類別2類別3類別3類別4類別4。
我有4個帶有復選框的類別,對於輸出,應檢查其中2個類別。 我在<?php echo (isset($categoryAccess) && $categoryAccess->id == $items->id) ? 'selected' : '' ?>
遇到錯誤<?php echo (isset($categoryAccess) && $categoryAccess->id == $items->id) ? 'selected' : '' ?>
<?php echo (isset($categoryAccess) && $categoryAccess->id == $items->id) ? 'selected' : '' ?>
它給此錯誤:試圖讓屬性'非對象的ID'和當我<?php echo (isset($categoryAccess) && $categoryAccess[0]->id == $items->id) ? 'selected' : '' ?>
<?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"
}
}
嘗試這個:
<?php
$allCategories = $category->getAllCategory();
$categoryAccess = $category_permitted->getCategoriesByUserId($user_info[0]->id);
foreach ($allCategories as $items) {
$checked = '';
foreach ($categoryAccess as $value) {
if($items->id == $value->id){
$checked = 'checked';
break;
}
}
?>
<input type="checkbox" name="cat_access[]" value="<?php echo $items->id ?>" <?php echo $checked ?>>
<?php echo $items->title?>
<?php
}
?>
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.