PHP if - 如果数据变量为空,则隐藏周围的文本

时间:2018-05-23 23:07:47

标签: php if-statement

几年前我一直想让我的PHP代码段更有用,也可以使用某种IF语句。但我发现它太复杂了,所以今天我推动我最后寻求帮助。

所以我需要一些编码的帮助,如果数据为空则隐藏变量周围的文本,但是这段代码有一些我无法解决的问题。我试图让我的片段尽可能干净,所以希望它仍能保持清洁。

请关注我,因为我对PHP的了解非常有限。

此代码是输出给定信息的javascript的一部分。

{
title: "This is it",
file: "thisisit.mp4",
image: "happy.jpg",
description: "some text right here",
},

我已经设法在PHP中成功地包装了这部分javascript,所以我可以使用变量,并将信息存储在外部其他地方。

echo '
{
title: "'.$data[2].' - '.$data[3].' ('.$data[0].') <img src=\"'.$data[10].'\"/>",
file: "'.$data[6].'",
image: "'.$data[9].'",
description: "'.$data[4].' <br><a href='.$data[8].'>Read more</a> ",
},
';

以上工作应该如此。如果填充了任何变量,那么它将按原样显示,如果为空,则它不会输出任何内容。 但是现在我想在变量周围有一个模板文本或html,只有当变量中有数据时才会显示。

以数据[8]为例。数据只包含一个URL以便阅读更多内容。只要有一个URL就很好,但如果没有给出URL,那么它只会显示一个没有URL的更多链接。 因此,如果数据为空,那么我希望不显示与该数据变量相关的任何文本或链接。

我尝试过使用IF语句,但我不知道是不是正确的方法,或者我只是不知道如何正确实现它。我做什么只会导致错误。

这样的试验和错误,仍在同一回声中

    echo '
    {
    title: "'.$data[2].' - '.$data[3].' ('.$data[0].') <img class=\"jwTitleIcon\" src=\"'.$data[10].'\"/>",
    file: "'.$data[6].'",
    image: "'.$data[9].'",
    description: "'.$data[4].'  '.if($data[8]) else{.'<br><a href='.$data[8].'</a>} ",
 },
 ';

或者像这样的试验和错误,分离到另一个回声

echo '
{
title: "'.$data[2].' - '.$data[3].' ('.$data[0].') <img class=\"jwTitleIcon\" src=\"'.$data[10].'\"/>",
file: "'.$data[6].'",
image: "'.$data[9].'",
description: "'.$data[4].' ';
 if(empty($data[8]) else { echo ' <br><a href='.$data[8].'>Read more</a> } ",
},
';

或者这个(在someone else's question找到) 这没有给出任何错误,但是由于html输出是空白的,代码正在破坏某些东西。可能搞乱了javascript,因为它非常敏感

echo '
{
title: "'.$data[2].' - '.$data[3].' ('.$data[0].') <img class=\"jwTitleIcon\" src=\"'.$data[10].'\"/>",
file: "'.$data[6].'",
image: "'.$data[9].'",
description: "'.$data[4].' ';
echo !empty($data[8]) ? '<br><a href='.$data[8].'>Habba hej</a> ':' ",
},
';

帮助表示感谢。谢谢

2 个答案:

答案 0 :(得分:2)

最好使用json_encode()将PHP值转换为Javascript文字,而不是使用您自己的echo语句。

在此范围内,您可以使用第三个运算符。

$data2 = array(
    'title' => "$data[2] - $data[3] ($data[0]) <img class='jwTitleIcon' src='$data[10]'>",
    'file' => data[6],
    'image' => $data[9],
    'description' => $data[4] . (!empty($data[8]) ? "<br><a href='$data[8]'>Habba hej</a>" : "")
);
echo json_encode($data2) . ",";

答案 1 :(得分:0)

Barmar用一行代码帮助我了!

. (!empty($data[8]) ? "<br><a href='$data[8]'>Habba hej</a>" : "")

这实际上是使用echo的技巧。也许不是不使用json编码的最佳编码,每个人都建议,但它现在可以很好地工作,如下所示。

工作

echo '
{ // <- Essential. Starting bracket 
title: "'.$data[2].' - '.$data[3].' ('.$data[0].') <img class=\"jwTitleIcon\" src=\"'.$data[10].'\"/>",
file: "'.$data[6].'",
image: "'.$data[9].'",
description: "'.$data[4] . (!empty($data[8]) ? '<br><a target=\"_blank\" href=\"'.$data[8].'\">Habba hej</a>' : ""). '",
}, // <- Essential. Ending bracket
';

如果代码可以像上面那样简单,但是b有利于json编码,那么我很乐意进行更改。 请记住括号和逗号},是必不可少的。