我有一个这种格式的PHP数组:
$js_data_array[] = array('href' =>$matches[1][0], //this is an image url
'title' =>'Lorem ipsum dolor sit amet, consectetur adipiscing elit',
);
我需要在javascript中使用这种格式
[{
'href' : 'http://farm5.static.flickr.com/4005/4213562882_851e92f326.jpg',
'title' : 'Lorem ipsum dolor sit amet, consectetur adipiscing elit'
},{
'href' : 'http://farm5.static.flickr.com/4005/4213562882_851e92f326.jpg',
'title' : 'Lorem ipsum dolor sit amet, consectetur adipiscing elit'
}]
我在wordpress中使用wp_localise_script()来传递似乎不接受json编码数组的数据。
如果我按原样传递数组,我会得到一个数字索引的数组,其重复值为'Array'
所以,问题是,如何将数据作为数组传递但没有数字索引?我在php数组AFAIK中没有重复键。
答案 0 :(得分:1)
e.g。
$matches = array(1=>array(0=>'foo'));
$js_data_array = array();
$js_data_array[] = array(
'href' =>$matches[1][0], //this is an image url
'title' =>'Lorem ipsum dolor sit amet, consectetur adipiscing elit',
);
$js_data_array[] = array(
'href' =>$matches[1][0], //this is an image url
'title' =>'Lorem ipsum dolor sit amet, consectetur adipiscing elit',
);
echo $json = json_encode($js_data_array);
打印
[{"href":"foo","title":"Lorem ipsum dolor sit amet, consectetur adipiscing elit"},{"href":"foo","title":"Lorem ipsum dolor sit amet, consectetur adipiscing elit"}]
答案 1 :(得分:1)
解码json数据时应该使用wp函数wp_specialchars_decode()
:
wp_specialchars_decode($json, ENT_QUOTES)
$json
是您的编码数组。
答案 2 :(得分:0)
似乎wp_localize_script()对引号进行编码。因此我替换了“在JS中:
gallery_data = image.data.replace(/"/g,'"');