Javascript-форум (https://javascript.ru/forum/)
-   Events/DOM/Window (https://javascript.ru/forum/events/)
-   -   PHP to JS Array (https://javascript.ru/forum/events/15008-php-js-array.html)

Pumych 09.02.2011 15:57

PHP to JS Array
 
Нашел решение но оно не совсем удовлетворяет нужды.
Имеется PHP массив $img_arr который нужно перевести в jsArr массив.

<script type="text/javascript">
      var jsArr = new Array('<?php implode(",", $img_arr); ?>');
</script>

Возвращает названия но без кавычек.


<script type="text/javascript">
       var jsArr = new Array('<?php implode("\",\"", $img_arr); ?>');     
</script>

В первом и последнем элементе не хватает по кавычке.

Подскажите п-ста простое решение.
:help:

Kolyaj 09.02.2011 16:03

Цитата:

Сообщение от Pumych
В первом и последнем элементе не хватает по кавычке.

Ну так добавьте их.

monolithed 09.02.2011 16:19

Цитата:

Сообщение от Pumych
Подскажите п-ста простое решение.

что мешает сразу массив заполнять:
var jsArr = [<?php echo $img_arr; ?>];

B@rmaley.e><e 09.02.2011 16:28

Самое простое и гибкое решение - использовать JSON
var jsArr = <?php echo json_encode($img_arr);?>;
Правда, в случае отсутствия средств работы с JSON на сервере все становится не так весело.

Pumych 09.02.2011 16:54

Цитата:

Сообщение от monolithed (Сообщение 91751)
что мешает сразу массив заполнять:
var jsArr = [<?php echo $img_arr; ?>];

Делается массив в массиве.
alert(jsArr[0]) - получаю
function Array() {
    [native code]
}

SkyLight 10.02.2011 10:50

Вам уже объяснили, то нужно просто сделать implode и приписать кавычки вначале и в конце, какие тут еще могут быть вопросы?

Маэстро 10.02.2011 19:13

Цитата:

Сообщение от Pumych (Сообщение 91743)
Нашел решение но оно не совсем удовлетворяет нужды.
Имеется PHP массив $img_arr который нужно перевести в jsArr массив.

<script type="text/javascript">
      var jsArr = new Array('<?php implode(",", $img_arr); ?>');
</script>

Возвращает названия но без кавычек.
Подскажите п-ста простое решение.

Как Вы формируете свой PHP-массив $img_arr ? Уже при его наполнении можно вместе с элементами массива вставлять кавычки, которые потом понадобятся в javascript.
Например, так:
array_push($img_arr,   "'".$OneArrayElement."'");

Маэстро 10.02.2011 19:16

Цитата:

Сообщение от SkyLight (Сообщение 91842)
Вам уже объяснили, то нужно просто сделать implode и приписать кавычки вначале и в конце, какие тут еще могут быть вопросы?

Это так, только когда PHP-массив пустой, то в результирующем JS-массиве появляется пара ненужных кавычек, что в некоторых случаях приводит к неверному результату. Чтобы избежать этого -надо создавать дополнительные проверки...

SkyLight 10.02.2011 22:30

Согласен. Но тут никто и не рассматривает готовое универсальное решение. Главное - принцип работы.


Часовой пояс GMT +3, время: 21:03.