我正在尝试修改一些PHP代码,以便在循环遍历循环时为其创建的元素分配一个唯一的CSS类。从理论上讲,我只想尝试一个与屏幕相呼应的“名称”,并将其作为一个类分配给下一个创建的元素......这是初始的相关代码循环:
<?php foreach($my_exams as $exam):
if(!$exam->is_taken) continue;?>
<tr><td><?php echo $exam->name;?></td></tr>
<?php endforeach;?>
简单地说,我正在尝试将$exam->name
回显的字符串分配给该<tr>
元素的类。像
<tr class="<?php echo $exam->name;"><td><?php echo $exam->name;?></td></tr>
虽然我确定我不正确地处理引号或语法(至少,无论如何,它最终都不会将类分配给<tr>
。
答案 0 :(得分:3)
如果您停止进出PHP这将有所帮助,它可能会更容易以这种方式阅读:
<?php
foreach($my_exams as $exam){
if($exam->is_taken){
echo '<tr class="'.$exam->name.'"><td>'.$exam->name.'</td></tr>';
}
}
如果你想做双引号,你需要在它们回显时转义它们,但是你可以使用一个变量而不连接一串字符串。 (一旦使用对象/数组,它有助于用{}
)
echo "<tr class=\"{$exam->name}\"><td>{$exam->name}</td></tr>";
参考:http://us2.php.net/manual/en/language.types.string.php#language.types.string.syntax.double
答案 1 :(得分:1)
<tr class="<? echo $exam->name ?>"><td><? echo $exam->name ?></td></tr>
答案 2 :(得分:-1)
其他人已经像我一样回答了这个问题,但我想补充一下来解释这个问题。为什么这不是一个“愚蠢”的问题,而是一些奇怪的副产品,一些CMS系统混合HTML和&amp; PHP在他们的模板中。简而言之:他们将模板格式化为漂亮的HTML,使其看起来干净整洁。很容易为非编码人员,但这样做他们混合使用内联PHP使得PHP编码看起来比现在更困难。意思是这段代码:
<?php foreach($my_exams as $exam):
if(!$exam->is_taken) continue;?>
<tr><td><?php echo $exam->name;?></td></tr>
<?php endforeach;?>
很容易就是这样:
<?php
foreach($my_exams as $exam) {
if ($exam->is_taken) {
echo '<tr><td>'
. $exam->name
. '</td></tr>'
;
}
}
?>
从编程的角度来看,现在更容易解析,所以现在可以这样做:
<?php
foreach($my_exams as $exam) {
if ($exam->is_taken) {
echo sprintf('<tr%s><td>', ' class="' . $exam->name . '"')
. $exam->name
. '</td></tr>'
;
}
}
?>
我所做的是使用sprintf
将' class="' . $exam->name . '"'
放入''。 %s
表示应该放在那里的字符串,字符串是sprintf
语句中逗号之后的字符串。我发现这更容易编码,测试和调试。但总的来说,使PHP编码更容易的关键是在需要将任何逻辑放在HTML上下文时使用直接PHP。