我正在尝试使用print_r获取一个n else语句,这样如果没有值,则输出“no values”。 在代码中,我将json的值转换为数组。 我想要实现的逻辑是 IF fieldTag包含“i”THEN输出与其关联的内容 ELSE说空了。 现在输出空白而不是“无值”。 感谢
for($b=0; $b<count($res['entries'][$i]['bib']['varFields']); $b++) //loop thru the varFields
{
if($res['entries'][$i]['bib']['varFields'][$b]['fieldTag'] == "i")
{
$subfieldText2 = $res['entries'][$i]['bib']['varFields'][$b]['subfields'][0]['content']."<br>";
if(count($subfieldText2) > 0) {
print_r($subfieldText2);
} else {
echo "no values";
}
}
}
答案 0 :(得分:0)
count()
用于数组,而不是字符串,获取字符串长度的方法是strlen()
。如果你想检查一个空字符串,只需将它与$var == ""
进行比较,你就不需要得到它。
但是你将"<br>"
连接到值,所以长度永远不会为零。您可以在连接之前检查的长度。
$subfieldText2 = $res['entries'][$i]['bib']['varFields'][$b]['subfields'][0]['content'];
if($subfieldText2 != "") {
$subfieldText2 .= "<br>";
print_r($subfieldText2);
} else {
echo "no values";
}
为避免重复该长表达式来访问该字段,您可以使用foreach
for($res['entries'][$i]['bib']['varFields'] as $field) {
if ($field['fieldTag'] == "i") {
$subfieldText2 = $field['subfields'][0]['content'];
...
}
}
答案 1 :(得分:0)
这对我有用,谢谢大家
$subfieldText2="not detected";
echo "ISBN: ";
for($b=0; $b<count($res['entries'][$i]['bib']['varFields']); $b++) //loop thru the varFields
{
if($res['entries'][$i]['bib']['varFields'][$b]['fieldTag'] == "i")
{
$subfieldText2 = $res['entries'][$i]['bib']['varFields'][$b]['subfields'][0]['content'];
echo $subfieldText2.", ";
}
}
echo $subfieldText2;