我想借助html格式提供一些php。
我的目的是打印:
生命状态:死亡(纽约1850年)
或(如果没有死):
生活状态:活着
只有当条件$life_status
设置为"死"时才应打印地点和日期。
以下代码适用于死亡情况,但不适用于活着的情况。
<h3>Title</h3>
<ul>
<li>Life status: <?php echo $life_status;?>
<?php if($life_status="dead"):?>
(<?php echo $date_death; ?> in <?php echo $place_death; ?>).
</li>
<?php endif; ?>
</ul>
对于活着的作品,我获得了:
生活状态:活着(in)。
如何在&#34;(in)。&#34;?
上应用php条件答案 0 :(得分:2)
您的操作员检查$life_status
是否已经死亡是错误的。它是单一的,应该是双倍的。下面的代码反映了这些变化,并实现了@AmericanUmlaut在上面的评论中正确建议的内容,以使您的html实际有效。
<h3>Title</h3>
<ul>
<li>Life status: <?php echo $life_status;?>
<?php if($life_status == "dead"):?> // This maybe the issue, wrong operator used to evaluate.
(<?php echo $date_death; ?> in <?php echo $place_death; ?>).
<?php endif; ?>
</li>
</ul>
答案 1 :(得分:1)
您使用的操作符错误。 =
是赋值,==
测试相等。
<h3>Title</h3>
<ul>
<li>Life status: <?php echo $life_status;?>
<?php if($life_status=="dead"):?> // == here instead of =
(<?php echo $date_death; ?> in <?php echo $place_death; ?>).
<?php endif; ?>
</li>
</ul>
(请注意,我也移动了if块的外部来解决我在评论中提到的问题。)
答案 2 :(得分:-1)
在Php字符串中不直接比较,可能不会给出预期的结果。因此,使用strcmp();功能会做的工作。当比较的2个字符串相等时它返回0并且是区分大小写的函数。
在你的情况下:
<h3>Title</h3>
<ul>
<li>
Life status: <?php
echo ( !strcmp($life_status,"dead") ) ? 'Dead ( '.$date_death.' in '.$place_death.' ).' : 'Alive' ;
?>
</li>
</ul>
我使用了Php Ternary运算符,称为Shorthand if / else。 的!如果它的真值显示死输出,则将0反转为1,否则将显示Alive输出。
Php Ternary:http://php.net/manual/en/language.operators.comparison.php
Php strcmp():http://php.net/manual/en/function.strcmp.php
我希望它有所帮助:)
此致 SA