我想在这里使用php在json数组上应用条件,只显示类型为discursive的数据
这是我正在尝试的代码,但它没有显示我想要的数据
<?php
$obj2 = json_decode($blog_data);
foreach(array_reverse($obj2->blogs) as $blog)
{
if($obj2>b_type == 'discursive')
{
?>
<h3> <?php echo $blog->name; ?></h3>
<span> <?php echo $blog->date; ?> </span>
<p><?php echo $blog->b_text; ?></p>
<?php
}
else{
echo "no discursive event";
}
}
?>
答案 0 :(得分:5)
在foreach
循环中,您应该访问当前的“博客”项(即$blog
),但不能访问公共对象$obj2
:
...
foreach(array_reverse($obj2->blogs) as $blog)
{
if ($blog->b_type == 'discursive')
...
答案 1 :(得分:1)
试试这个:
<?php
$obj2 = json_decode($blog_data);
foreach(array_reverse($obj2->blogs) as $blog)
{
if($blog->b_type == 'discursive')
{
?>
<h3> <?php echo $blog->name; ?></h3>
<span> <?php echo $blog->date; ?> </span>
<p><?php echo $blog->b_text; ?></p>
<?php
}
else{
echo "no discursive event";
}
}
?>
答案 2 :(得分:1)
您应该在if条件中使用变量$blog
而不是$obj2
。
<?php
$obj2 = json_decode($blog_data);
foreach (array_reverse($obj2->blogs) as $blog) {
if ($blog > b_type === 'discursive') {
?>
<h3> <?php
echo $blog->name;
?></h3>
<span> <?php
echo $blog->date;
?> </span>
<p><?php
echo $blog->b_text;
?></p>
<?php
} else {
echo "no discursive event";
}
}
?>
此外:
===
而非==
进行严格比较。请查看this article,了解为什么要这样做。