将数字索引的PHP数组传递给javascript

时间:2010-08-27 11:51:42

标签: php javascript arrays

我有一个这种格式的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中没有重复键。

3 个答案:

答案 0 :(得分:1)

请参阅json_encode()

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,'"');