我一直在尝试填充一个复选框列表,其中也从MySQL检索值和名称。我相信我需要将两个iD匹配在一起才能将其标记为已选中但我目前不确定。
$boardsiD = $pClass->checkedBoards();
foreach($pClass->retrieveBoards() as $data)
{
$boardiD = $data['boardiD'];
$boardName = $data['boardName'];
if($boardiD == $boardsiD) ------------------ 1 ---------------------
{
$checked = 'checked="1"';
}
echo '
<li><input '.$checked.' type="checkbox" value="'.$boardiD.'">'.$boardName.'</li>
';
}
如果中间带有第一个的破折号,我在那里检查棋盘ID是否相同,如果是,则应用checked="1"
。但它似乎没有起作用。
以下是$ boardsiD的输出;这些是在数据库中已经checekd的复选框;保存了我正在尝试与$boardiD = $data['boardiD']
匹配的ID,这是id的整个列表(大约30个id)。
Array (
[0] => Array
([board_iD] => 106468047379795203)
[1] => Array
([board_iD] => 286119451265381250)
[2] => Array
([board_iD] => 136234026166934321)
[3] => Array
([board_iD] => 468022654964640361)
[4] => Array
([board_iD] => 409757334785529893)
[5] => Array
([board_iD] => 409757334785575605)
[6] => Array
([board_iD] => 490681390589888313)
)
我不确定我是否可以使用preg_match,或者如果我应该使用preg_match,我试过但是效果不好,有什么想法,为什么以下不起作用?
答案 0 :(得分:1)
你的$boardsiD
是一个二维数组,所以我们先把它转换成一维数组。
$it = new RecursiveIteratorIterator(new RecursiveArrayIterator($boardsiD));
$newBoardIDs = iterator_to_array($it, false);
然后,
foreach($pClass->retrieveBoards() as $data)
{
$boardiD = $data['boardiD'];
$boardName = $data['boardName'];
if(in_array($boardID,$newBoardIDs))
{
$checked = 'checked="1"';
}
echo '
<li><input '.$checked.' type="checkbox" value="'.$boardiD.'">'.$boardName.'</li>
';
}
应该解决你的问题。
答案 1 :(得分:1)
checked =“1”是无效的HTML。 HTML4的正确语法是
<input type="checkbox" value="someValue" checked>
或HTML5
<input type="checkbox" value="someValue" checked="checked" />
要检查$ boardID是否为$ boardsID,您可以执行以下操作:
$checked = '';
for($i = 0; !$checked && $i < sizeof($boardsID); $i++)
if($boardID == $boardsID[$i]['board_iD'])
$checked = 'checked="checked"';