如何从PHP数组返回JavaScript对象


How can I return a JavaScript object from a PHP array?

如果我定义了一个数组,并用json_encode()对其进行编码

$array = array("a" => "element1", "b" => "element2");
echo json_encode($array);

我得到

{"a":"element1","b":"element2"}

这是正确的JSON。然而,我对以下输出感兴趣:

{a:"element1",b:"element2"}

有没有一种方法可以在PHP5.2中实现这一点,或者我应该自己实现它?

EDIT:由于人们开始投反对票,并评论我想要的输出不是正确的JSON,所以让我指出这个问题读的是"JavaScript对象",而不是"JSON"。我正在使用的系统想要我描述的格式,遗憾的是我无法改变。

好吧,如果你绝对必须使用你所指示的无效格式,你就必须编写自己的函数来完成。当然,这真的不建议,你应该改进JS代码来解析返回的JSON字符串,而不是强迫PHP输出无效。

这里有一个简单的函数,应该可以实现您想要的(至少对于给定的示例数组-如果您使用多维数组,则需要对其进行修改):

function custom_json_encode( $arr )
{
    $len  = count($arr);
    $i    = 1;
    $json = '{';   
    foreach( $arr as $key => $val )
    {
        $json.= $key.':"'.$val.'"';
        $json.= ($i < $len) ? ',' : '';
        $i++;
    }
    $json.= '}';
    return $json;
}

返回示例:

{a:"element1",b:"element2"}

演示