<?php
$content = "
<table style='text-align: center;'>
<tr>
<td style='text-align: center;'>
".$result->name."
</td>
</tr>
</table>
I have the above code, and I would like to know, if i can add an if
statement inside style
of 2nd td
, so if ($result->name == ""){display: none;}
.
Is there any way that this can happen ?
Notice that if name exists the above code will print the name, if not it will print an empty td
.
Thanks in advance!
Here's a few ways you can do it:
1: Use a Ternary Operator
<?php
$content = "
<table style='text-align: center;'>
<tr>
<td style='text-align: center;" . ($result->name ? " display: none;" : "") . "'>
{$result->name}
</td>
</tr>
</table>
";
2: Assign the CSS to a variable and interpolate it
<?php
$css = $result->name ? " display: none;" : "";
$content = "
<table style='text-align: center;'>
<tr>
<td style='text-align: center;{$css}'>
{$result->name}
</td>
</tr>
</table>
";
3: Break the $content variable assignment into bits so you can use an if() condition
<?php
$content = "
<table style='text-align: center;'>
<tr>
<td style='text-align: center;";
if($result->name) $content .= " display: none;";
$content .= "'>
{$result->name}
</td>
</tr>
</table>
";
4: Use PHP's template style syntax
<table style='text-align: center;'>
<tr>
<td style='text-align: center;<?php if($result->name): ?> display: none;<?php endif; ?>'>
<?= $result->name; ?>
</td>
</tr>
</table>
This is my preferred option if you're working in a template (a .phtml
file for example).
5: ... or mix it up a bit (template style with a ternary echo)
<table style='text-align: center;'>
<tr>
<td style='text-align: center;<?= $result->name ? " display: none;" : ""; ?>'>
<?= $result->name; ?>
</td>
</tr>
</table>
Ultimately it comes down to which you find most readable and are most comfortable with.
Sure, use the ternary operator...
$content = "<table style='text-align: center;'>
<tr>
<td style='text-align: center;" . ($result->name == 'Foo Bar' ? ' display:none;' : '') . "'>
".$result->name."
</td>
</tr>
</table>"
You sure can! This is a perfect opportunity to use a ternary statement. Let me explain.
A ternary statement looks like this:
<?php
$condition = true;
$content = 'Condition is ' . ( ($condition === true) ? 'met' : 'not met' ) . 'and some more text';
// Outputs 'Condition is met and some more text' because condition is true
?>
Essentially it allows you to write inline conditional statements. Sometimes they're not very readable, but sometimes they in fact make the surrounding code more readable.