在我进入我想要做的事情之前,让我解释一下这个问题。 ...所以,我有一个表格,有10个项目,所以喜欢
<label><input type="checkbox" value="1">Item 1</label>
<label><input type="checkbox" value="2">Item 2</label>
等等。
所以这是从一个表中的数组中填充的,如此
array(
'1' => 'Item 1',
'2' => 'Item 2',
)
等等。
现在,我有另一个存储1,3,5,6等数字的表。 这些是应该检查的表单中的项目ID。所以在html中,应该检查匹配的任何ID。
所以......我要尝试做的是拿出那个数字列表,将它爆炸,把它放到像
这样的数组中array(
'1' => 'checked',
'3' => 'checked',
'5' => 'checked'
)
然后最后,合并这些数组,这样就像
array(
'item 1' => array('Item 1', '1', 'checked'),
'item 2' => array('Item 2, '2'),
'item 3' => array('Item 3', '3', 'checked'));
然后填充我的表格。
这是疯了吗?我觉得必须有一个更简单的方法来做到这一点。还有,我怎么能用这些数组呢?这是我以前做过的更极端的阵容杂耍。任何建议都会很棒。谢谢。编辑 - 另外...... Javascript会是更好的选择吗?这很容易,但是考虑到任何没有Javascript的浏览器(无论如何都会破坏应用程序),我还记得将它保存在PHP中。 Javascript是合法的还是更好的选择?
答案 0 :(得分:2)
对已检查项目表的更改可能是有序的,但是您已经拥有的数据的简化版本来自数据库:
$checked_ids = explode(',', $checked_rows);
foreach($item_rows as $item) {
$checked = in_array($item['id'], $checked_ids) ? 'checked' : '';
// your checkbox input below using $checked
echo $item['id'] . " " . $checked . " " . $item['name'];
}
如果您需要重复使用它,请考虑将其作为一个获取行和已检查ID的函数。
答案 1 :(得分:0)
这是你可以做的:
$checkbox =array(
'1' => 'Item 1',
'2' => 'Item 2',
'3' => 'Item 3'
);
$checked = array(
'1' => 'checked',
'3' => 'checked',
'5' => 'checked'
);
$output1 = array();
foreach ($checkbox as $key => $value) {
if (array_key_exists($key,$checked) && $checked[$key] == 'checked') {
$result = array($value,$key,'checked');
} else {
$result = array($value,$key);
}
$output1[$value] = $result;
}
var_dump($output1);