在讨论我要做的事情之前,让我先解释一下这个问题. ...我有一个表单,有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'));
然后用它填充我的表单。
这很疯狂吗?我觉得一定有更简单的方法来做这件事。还有,我怎么处理这些数组呢?这是我之前做过的更极端的数组杂耍。任何建议都很好。谢谢你!
EDIT - Also…Javascript会是更好的选择吗?这很容易,但我的想法是在PHP中保存它,以防任何没有Javascript的浏览器(这无论如何都会破坏应用程序)。Javascript是合法的还是更好的选择?
对已检查项表的更改可能是有序的,但是您已经必须处理来自数据库的数据的简化版本:
$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。
你可以这样做:
$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);