我已经查看过有关此问题的其他问题,但没有人对我有任何答案。我有这行代码:
foreach ( $categories as $category ){
echo '<label><input type="checkbox" id="type-'. $category->name . '" value="'. $category->name . '" class="shopping" name="top_level[]" <?php checked('. $category->name . ', $current) ?>>'. $category->name . '</label>';
}
当我运行该文件时,会显示正确的字段但是有一个&#39;&gt;&#39;在文本前面。 Firebug将HTML输出显示为:
<input type="checkbox" id="type-Fashion" value="Fashion" class="shopping" name="top_level[]" <?php="" echo="" checked(fashion,="" $current)="" ?="">
为什么整个PHP代码中都存在所有这些=""
?
checked()
函数是Wordpress并返回HTML属性checked='checked'
,但我认为问题在于在HTML标记中使用PHP。
该文件以.php保存,我在我的WampServer上运行PH P5.5.12。
我尝试过很多事情,以及别人的建议:
foreach ( $categories as $category ){
?>
<label><input type="checkbox" id="type-<?php echo $category->name; ?> value="<?php echo $category->name; ?>" class="shopping" name="top_level[]" <?php if(in_array($category->name, $current)){ echo 'checked="checked"';} ?>><?php echo $category->name; ?> </label>
<?php
}
出现此错误:
警告:IN_ARRAY()表示参数2应该是阵列,BOOLEAN GIVEN
$current
是一个数组。
另一篇帖子建议使用等号<?= ..... ?>
。这并没有改变任何事情。
如果我从输入标签中删除PHP代码,一切正常。
我很感激任何帮助。提前谢谢!
答案 0 :(得分:2)
请注意上面的颜色突出显示。您错过了"
:
[..snip..]id="type-<?php echo $category->name; ?> value="<?[..snip..]
^---here
因此id
属性在value=
之后才会终止,导致所有的key = value对都不同步。
您所看到的是您的浏览器尝试清理您正在生成的错误HTML。
答案 1 :(得分:2)
您只需要在执行文字输出时使用<?php
(在使用?>
退出脚本模式后),而不是在您执行PHP程序代码时。如果您在echo
语句中,则表示您正在执行PHP代码。只需连接函数调用就像连接变量一样。
echo '<label><input type="checkbox" id="type-'. $category->name . '" value="'. $category->name . '" class="shopping" name="top_level[]"' . checked($category->name, $current) . '>'. $category->name . '</label>';