PHP ob_end_clean不清除缓冲区

时间:2013-06-20 11:01:34

标签: php

我要做的是使用PHP文件输出的JSON数组进行响应。

header("Content-Type: application/json");
$ret["response"] = array();

$items = getItems();
$ret["response"] = array();
ob_start();
foreach($items as $model){
    include("view/item.php");
    $ret["response"][] = ob_get_contents();
    ob_end_clean();
}
ob_end_clean();
echo json_encode($ret);

文件view/item.php包含一些PHP echo语句,但问题是响应包含include语句和JSON编码项的输出。

如何让脚本只返回JSON部分?

2 个答案:

答案 0 :(得分:1)

尝试使用代码,

foreach($items as $model){
    ob_start();
    include("view/item.php");
    $ret["response"][] = ob_get_contents();
    ob_end_clean();
}
ob_end_clean();

,或者

ob_start();
foreach($items as $model){
    include("view/item.php");
    $ret["response"][] = ob_get_contents();
}
ob_end_clean();

答案 1 :(得分:0)

第二个选项可以正常使用。

ob_start();
foreach($items as $model){
  include("view/item.php");
  $ret["response"][] = ob_get_contents();
}
ob_end_clean();