复选框选中if in_array


Checkboxes Checked if in_array

为什么此代码只选中第一个复选框?

$activetheme = $theme->selectActiveThemeName();
foreach($blocks->availableBlockAreas($activetheme) as $block_name => $block_area_number) {
    $selected = (in_array($block_area_number, $block_areas)) ? ' checked="checked"' : '';
    echo '<p><input class="block_checkboxes" '. $selected .' type="checkbox" name="block_areas[]" value="'.$block_area_number.'" />'.ucfirst($block_name).'</p>';
}

$block_areas是一个数组:

Array ( [0] => 1,2,3 )

$blocks->availableBlockAreas($activetheme)返回

Array ( [Homepage - Left Column] => 1 [Homepage - Right Column] => 2 [Custom Page - Left Column] => 3 [Custom Page - Right Column] => 4 )

$block_area_number应该迭代吗?

编辑

在Geoandri的回答之后,我提出了这个修复方案,首先是在插入DB时使用serializedarray,然后:

$block_areas[] = unserialize($row['block_areas']);
$selected = (in_array($block_area_number, $view->array_flatten($block_areas))) ? ' checked="checked"' : '';

尝试将$block_areas更改为

$block_areas = array(1,2,3);

我认为这种方式会奏效。