Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/json/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/apache-flex/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php json_encode中的意外输出1_Php_Json - Fatal编程技术网

Php json_encode中的意外输出1

Php json_encode中的意外输出1,php,json,Php,Json,我一直在尝试使用json\u encode打印输出,代码如下: <? $lid = $_GET['last_id']; $sql = "SELECT * FROM tbl_posts WHERE id < $lid ORDER BY id DESC LIMIT 10"; $result = mysqli_query($con,$sql); $json = include('datam.php'); echo json_encode($json

我一直在尝试使用
json\u encode
打印输出,代码如下:

<?  
   $lid = $_GET['last_id'];

   $sql = "SELECT * FROM tbl_posts WHERE id < $lid ORDER BY id DESC LIMIT 10";

   $result = mysqli_query($con,$sql);

   $json = include('datam.php');

   echo json_encode($json);
?>

以下是datam.php文件:

<?
$count = 0;
while($row = mysqli_fetch_array($result)) {
$id = $row['id'];
$likes = $row['likes'];
$dislikes = $row['dislikes'];
$text = $row['text'];
$text = htmlspecialchars($text);
$title = substr($text, 0, 50);
$title = preg_replace('~[^\\pL\d]+~u', '-', $title);
$title = trim($title, '-');
$title = strtolower($title);
$title = preg_replace('~[^-\w]+~', '', $title);
if(empty($title)) {
$title = "no-title";
}
$cat = $row['cat'];
$cat = strtolower($cat);
$cat = str_replace(" ","-",$cat);
$ccat = str_replace("-"," ",$cat);
$ccat = ucwords($ccat);
$by = $row['uid'];
$dt = $row['date'];
$tm = $row['time'];
$time = strtotime("$dt $tm");
$nsfw = $row['nsfw'];
if ($nsfw == 1)
$isnsfw = '<span class="nsfw">NSFW</span>';
else
$isnsfw = "";

// Time Ago

// Get OP
$suser = "SELECT * FROM tbl_users WHERE id = $by";
$muser = mysqli_query($con,$suser);
$guser = mysqli_fetch_array($muser);
$byuser = $guser['user'];
$byuser = strtolower($byuser);
$byuser = str_replace(" ","-",$byuser);
$cbyuser = str_replace("-"," ",$byuser);
$cbyuser = ucwords($cbyuser);

// WhatsApp Link
$wm = preg_replace("/\n/", "%0A", $text);

if($count == 5 && $cnsfw == 0) {
include "adapp.php";
}

echo '<div class="box" id="'.$id.'"><div class="t">Posted by <a href="/profile/'.$byuser.'">'.$cbyuser.'</a> in <a href="/cat/'.$cat.'">'.$ccat.'</a> '.ago($time).' ago</div><div class="m">'.$text.'</div><div class="m"><span class="col-3"><span class="likes">'.$likes.' Likes</span></span><span class="col-3"><span class="dislikes">'.$dislikes.' Dislikes</span></span><span class="col-3">'.$isnsfw.'</span></div><div class="b"><span class="col-5 l bbox"><img src="/img/like.png" /></span><span class="col-5 l bbox"><img src="/img/dislike.png" /></span><span class="col-5 l bbox"><a href="/msg/'.$id.'/'.$title.'"><img src="/img/comment.png" /></a></span><span class="col-5 l bbox"><a rel="nofollow" href="whatsapp://send?text=http://whatsappstatus.in/msg/'.$id.'%0A'.$wm.'"><img src="/img/whatsapp.png" /></a></span><span class="col-5 l bbox"><img src="/img/options.png" /></span></div><div class="clr"></div></div>';
$count++;
}
?>

使用此代码,所有输出都会按预期显示,但在每个输出结束时,会出现意外输出
1
,该输出没有来源

每次执行这段代码时,它都会在最后给出一个意外的1,而我似乎无法找到它的来源

以下是示例输出的图片:

您可以访问此URL进行检查:

使用时

$json = include('datam.php');
在datam.php中,您应该
返回要分配给
$json
的数据值,而不是将其回显。datam.php中的echo是显示数据的代码,1是分配给
$json
的值(这是datam.php页面返回的值)

您可以通过在子页面中注释掉echo来测试这一点,您应该只看到显示的值1

查看代码时,只包含此子页面而不将值分配给
$json
,可能是最简单的解决方案,但您可能有理由对返回值进行json编码

更新: 要批量处理数据,请构建一个数据数组。在顶端

$output = [];
在echo之后-构建一个结果数组并将其添加到输出数组中

$output[] = [$id, $byuser, $cbyuser, ...];
(您需要填写所有需要的字段)

最后呢

return $output;

这将把所有数据传回调用页面。

当我看到你的链接时,我在每10个元素“1”被打印出来后就知道了。我想它可能在你的循环中有一些值。您可以显示数据加载的代码吗?您的
datam.php
adapp.php
@Niyanta如何使用
datam.php
加载数据,问题中包含的
adapp.php
只不过是一个adsense广告代码。那么
adapp.php
@Niyanta呢?这是一个adsense广告代码在评论adsense代码后进行检查?返回值是一个很好的解决方案,但存在一个问题。正如您所看到的,我在
while
循环中回显数据,因此有多个值要返回,我认为返回多个值是不可能的。我添加了一种创建结果集的方法,不确定这是否代替了回显,也不确定,但看看是否有帮助。