2010-08-27 4 views
1

У меня есть PHP-массив в следующем формате:Передача численно индексированный PHP массив JavaScript

 $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' 
}] 

Я использую wp_localise_script() в wordpress для передачи данных, которые, похоже, не принимают json-кодированный массив.

Если я передать массив, как есть, я получаю численно индексированный массив с повторяющимися значениями «Массив»

Итак, вопрос, как я могу передать данные в виде массива, но без числовых индексов? Я не могу дублировать ключи в php-массиве AFAIK.

ответ

0

Кажется, что wp_localize_script() кодирует кавычки. Поэтому я сделал замену из " в JS:

gallery_data = image.data.replace(/"/g,'"'); 
1

см json_encode()

например,

$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"}] 
+0

да спасибо, но я пробовал и не может использовать его с wp_localise_script() – codecowboy

+0

При входе в выходные JSON на консоли Firebug я получаю строку вместо объекта, например: «[{" Href ": " /files/2010/06/Bioreactor-4.jpg ", " название ": " Lorem Ipsum боль сидеть Амет, consectetur adipiscing Элит "} ..... ли что из-за " – codecowboy

+0

С? что я читаю здесь: http://weblogtoolscollection.com/archives/2010/05/07/adding-scripts-properly-to-wordpress-part-2-javascript-localization/ это не так, как вы используете этот wp_localise_script(). – VolkerK

1

Вы должны использовать функцию Wp wp_specialchars_decode() при декодировании ваших данных JSon:

wp_specialchars_decode($json, ENT_QUOTES) 

$json Где находится закодированный массив.

Смежные вопросы