合并ID匹配的数组? PHP

时间:2015-06-01 17:10:24

标签: php arrays multidimensional-array

在我进入我想要做的事情之前,让我解释一下这个问题。 ...所以,我有一个表格,有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是合法的还是更好的选择?

2 个答案:

答案 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);