几年前我一直想让我的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> ':' ",
},
';
帮助表示感谢。谢谢
答案 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编码,那么我很乐意进行更改。 请记住括号和逗号},是必不可少的。