我在PHP中生成一些JS对象字符串,因为我需要的所有变量都在那里,而不是将它们传递给js并在那里生成对象:
$results[] = "{value:" . $data . ",color:\"rgba($aa,$ab,$ac," . Config::$TRANSPARENCY_B . ")\",highlight:\"rgba($ba,$bb,$bc," . Config::$TRANSPARENCY_B . ")\",label:\"" . $entry->getDate() . "\"}";
现在我想将JS对象字符串的完成结果列表传递给JS以显示它。生成的结构应该类似于:[{object1}, {object2}, ...]
为了达到这个目的,我使用htmlspecialchars(json_encode($result), ENT_QUOTES, "UTF-8")
然而,这最终会出现在结构中:{"{object1}", "{object2}", ...]
,这当然是行不通的。我如何设法抛弃无用的封闭"
?我查看了json_encode()
和htmlspecialchars()
,但似乎没有任何参数适合。
有什么想法吗?谢谢!
编辑:事实证明我完全是愚蠢的。当然我应该收拾一些真正的objets而不是代表它们的字符串..谢谢!答案 0 :(得分:2)
为什么不创建真实对象,这样就可以将它们编码为JSON很简单
$obj = new stdClass;
$obj->value = $data;
$obj->label = $entry->getDate();
$results[] = $obj;
echo json_encode($results);
关联数组也将在JSON中作为“对象”输出,并且可能更容易
答案 1 :(得分:2)
最好不要手动制作字符串中的JSON,并使用json_encode
函数为您完成:
$results[] = array(
'value' => $data,
'color' => "rgba($aa,$ab,$ac," . Config::$TRANSPARENCY_B . ")",
'highlight' => "rgba($ba,$bb,$bc," . Config::$TRANSPARENCY_B . ")",
'label' => $entry->getData()
);
echo json_encode($results);