合并id匹配的数组?PHP



在讨论我要做的事情之前,让我先解释一下这个问题. ...我有一个表单,有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);

相关内容

  • 没有找到相关文章

最新更新