PHP if-如果数据变量为空,则隐藏周围的文本
几年前,我一直想让我的PHP代码片段更有用,同时使用某种IF语句。但我觉得这太复杂了,所以今天我逼着我最后请求帮助 因此,我需要一些编码方面的帮助,如果数据为空,请隐藏变量周围的文本,但这段代码有一些扭曲,我无法解决。我已经尽力使我的代码片段尽可能干净,所以希望它仍然可以保持干净 请容忍我,因为我对PHP的知识非常有限 此代码是输出给定信息的javascript的一部分PHP if-如果数据变量为空,则隐藏周围的文本,php,if-statement,Php,If Statement,几年前,我一直想让我的PHP代码片段更有用,同时使用某种IF语句。但我觉得这太复杂了,所以今天我逼着我最后请求帮助 因此,我需要一些编码方面的帮助,如果数据为空,请隐藏变量周围的文本,但这段代码有一些扭曲,我无法解决。我已经尽力使我的代码片段尽可能干净,所以希望它仍然可以保持干净 请容忍我,因为我对PHP的知识非常有限 此代码是输出给定信息的javascript的一部分 { title: "This is it", file: "thisisit.mp4", image: "happy.jpg"
{
title: "This is it",
file: "thisisit.mp4",
image: "happy.jpg",
description: "some text right here",
},
我已经成功地将javascript的这一部分封装在PHP中,因此我可以使用变量,并将信息存储在外部的其他地方
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> ",
},
';
echo'
{
标题:“'.$data[2].-'.$data[3].('.$data[0].')”,
文件:“'.$data[6]”,
图像:“'.$data[9]”,
说明:“'.$data[4].
”,
},
';
上面的工作应该是这样的。如果填充了任何变量,则该变量将按原样显示,如果为空,则不会输出任何内容。
但现在我希望在变量周围有一个模板文本或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'
{
标题:“'.$data[2].-'.$data[3].('.$data[0].')”,
文件:“'.$data[6]”,
图像:“'.$data[9]”,
说明:“'.$data[4].'.if($data[8])else{.'
}”,
},
';
或者这个(在上找到的)
这并没有给出错误,但由于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> ':' ",
},
';
echo'
{
标题:“'.$data[2].-'.$data[3].('.$data[0].')”,
文件:“'.$data[6]”,
图像:“'.$data[9]”,
说明:“.$data[4]”;
echo!empty($data[8])?“
”:“,
},
';
谢谢你的帮助。谢谢最好使用
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) . ",";
$data2=数组(
'title'=>“$data[2]-$data[3]($data[0])”,
'文件'=>数据[6],
'image'=>$data[9],
'description'=>$data[4]。(!empty($data[8])?“
”:“”)
);
echo json_编码($data2)。",";
正如Barmar所说,使用json_编码将更容易
此函数将数组作为参数并输出相应的json
因此,基本上,您需要做的是创建一个数组,其中键是对象中的键
我将用你的例子(描述)做一个例子,让你适应剩下的
$output = []; // We start with an empty array
// Let's consider that there is a description
$output['description'] = $data[4];
if(!empty($data[8])) { // If there is a link at $data[8], append it to the description
$output['description'] .= '<br><a href='; // append the html
$output['description'] .= $data[8]; // append the link
$output['description'] .= '>Read more</a>'; // append the end of the html
// One line equivalent :
// $output['description'] .= '<br><a href=' . $data[8] . '>Read more</a>';
}
// Then you echo the json_encoded output
echo json_encode($output);
Barmar帮我写了一行代码
. (!empty($data[8]) ? "<br><a href='$data[8]'>Habba hej</a>" : "")
。(!empty($data[8])?“
”:“”)
这实际上实现了使用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
';
echo'
{//不要像这样手工创建JSON,使用JSON\u encode()
。这个答案是正确的;不要使用echo生成对象序列化,OP是过度工程。嗨,Barmar。感谢您的评论。在这种情况下,括号对于javascript的工作是必不可少的。我在尝试将括号添加到示例中时出错。Barmar-尽管您确实帮助了我!空代码行!这s实际上使用了echo。也许这不是不使用json encode的最佳编码,但它工作得很好。你会得到什么错误?json_encode()
应该包括括号。刚刚注意到我在class='jwTitleIcon'
中使用了错误的引号,这可能会导致语法错误。它现在应该可以工作了。嗨,Alex。是的,coma对于代码的工作是必不可少的,没有它,输出将是空白的。括号也是必不可少的,没有它,代码将毫无用处。对吗他的意思是我不能使用你的示例?如果你想在每个代码片段后面加一个逗号,你可以使用示例并在这里添加comaecho json\u encode($output)“,”;
。如果你想在每个代码段后面加逗号,除了最后一个,你可以修改我给出的最后一个例子来做到这一点。你只需复制粘贴我放的前3个例子中的一个的代码/*…将信息片段添加到输出中*/嗨,Alex。感谢你仍然试图帮助我。尽管我仍然很困惑ed.括号和逗号都是必需的。我已经在6月5日9:53给出了答案,你可以在那里看到我评论了哪个括号是必需的。在我的答案中呼应的代码也很重要,它看起来与输出html源代码中的完全一样。否则它会破坏javascript。没问题,所以基本上,你是什么javascript中的回音是一个对象数组,我是否正确(即,[{…},{…},{…}]
)?如果我遗漏了一个最重要的要求,我很抱歉。我作为echo输出的javascript非常重要,它在html源代码中保持完全相同。否则它会破坏javascript。PHP代码片段实际上在javascript代码中,因为我需要输出中的数据作为变量。很抱歉混乱
$output = []; // We start with an empty array
// Let's consider that there is a description
$output['description'] = $data[4] . (!empty($data[8]) ? ('<br><a href=' . $data[8] . '>Read more</a>') : ''); // We add the link if there is a link at $data[8]
// Then you echo the json_encoded output
echo json_encode($output);
function snippet(&$json, $data) // The reason to put &$sjon and not $json is because we need to have a parameter passed by reference
{
// HERE PLACE THE CODE OF YOUR SNIPPET
$output = [];
/* ... add the pieces of information into the output */
$json[] = $output; // We add the $output to our array
}
$datas = [/*... array of $data*/];
$json = []; // Create the empty array
foreach ($datas as $data) {
snippet($json, $data); // Call the snippet
}
echo json_encode($json);
. (!empty($data[8]) ? "<br><a href='$data[8]'>Habba hej</a>" : "")
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
';