我是一个完整的PHP新手,所以可能有一种更好的方法可以根据不同的变量输出一个行的类。
这是不好的,如果是为什么呢?
if ($variable1 > 0 && $variable2 != 2) {
echo "<tr class='variable1'>";
}
elseif ($variable2==2)
{
echo "<tr class='variable2'>";
}
else {
echo "<tr>";
}
答案 0 :(得分:1)
你可以先放if ($variable2==2)
,然后你就不需要在另一个if语句中否定它。像这样:
if ($variable2==2){
echo '<tr class="variable1">';
}elseif ($variable1 > 0) {
echo '<tr class="variable2">';
}else {
echo '<tr>';
}
虽然对我来说没问题,但它确实依赖于其余的代码,你可能会稍微更改代码以使其更容易阅读但它看起来很简单所以,如果它有效,我会保持它是怎么回事。
答案 1 :(得分:1)
PHP代码在语法上是正确的,虽然缩进似乎搞砸了。输出的HTML代码无效,因为attributes values必须用双引号括起来。
我还建议稍微重新排序:
if ($variable2 == 2) {
echo '<tr class="variable2">';
} elseif ($variable1 > 0) {
echo '<tr class="variable1">';
} else {
echo '<tr>';
}
答案 2 :(得分:0)
嗯,你可以从
开始if ($variable2==2)
如果继续
,这将保护你$ variable2!= 2elseif ($variable1 > 0)
但一般来说我没有看错。当然这取决于你还想做什么。
答案 3 :(得分:0)
我会这样写:
$class_name = '';
if (2 == $variable2)
{
$class_name = 'variable2';
}
elseif ($variable1 > 0)
{
$class_name = 'variable1';
}
echo '<tr class="' , $class_name , '">';
注意在相等测试中我在变量之前使用常量..这是一种习惯,这样如果我错过一个等于它会导致错误,我将被迫纠正它而不是“奇怪的”行为
另一件事是我将初始值赋给$ class_name,这将是默认值
我也使用撇号而不是引号,因为它更快(因为你的方式php会解析变量的字符串)
最后一件事就是我回复多个字符串..这也比连接3个字符串更快(
echo '<tr class="' , $class_name , '">';
而不是回声
'<tr class="' . $class_name . '">';
)
答案 4 :(得分:0)
2条规则供您学习如何编程:
0.1。干:不要重复自己。
如果你的tr标签输入了3次,你可以肯定地说错了。
0.2。将业务逻辑与表示逻辑分开。使用模板输出。首先准备数据,只有在一切准备就绪后才开始输出。
所以,首先你必须定义你的变量
if ($variable2 == 2){
$class = "variable1";
}elseif ($variable1 > 0) {
$class = "variable2";
}else {
$class = "";
}
接下来,你必须包含一个模板并在其中编写原生HTML,尽可能少的PHP:
<tr class="<?=$class?>">
答案 5 :(得分:0)
嗯,这在很多层面上都是一种非常不幸的方法,但我可以告诉你,即使我开始按照你描述的方式编写代码,只是在12年前。
我还可以告诉你,最终将php与标记混合在同一个文件中会让你陷入困境,比你想象的更快。 与生活中的大多数事情一样,在PHP中开发时,更快地完成任务并在以后休息时担心是一个糟糕的问题。
一些指示:
一些链接:
答案 6 :(得分:-1)
echo ( ( $variable1 > 0 ) && ( $variable2 != 2 ) )
? "<tr class='variable1'>"
: ( $variable2 == 2 )
? "<tr class='variable2'>"
: "<tr>";