2014-02-11 4 views
0

У меня есть массив в PHP позволяет называть его:Простого PHP массив в массив Javascript

$nums = array(10,25,52,32,35,23); 

Я хочу, чтобы отправить его на мой яваскрипте функцию, как это:

var nums=[10,25,52,32,35,23]; 

Как я могу это сделать ? (My Javascript имя файла "nums.js")

Edit:

nums.js является Java-код. Он изменяет значения таблицы в html. Но значения существуют только в php. Поэтому я должен отправить значения в javascript.

ответ

2

РНР> = 5,2

json_encode функция для этой цели:

<?php echo 'var nums=' . json_encode(array(10,25,52,32,35,23)) . ';'; ?> 

Документах: http://php.net/json_encode

РНР < 5,2

Если вы не можете использовать json_encode, take a look at this post для определения эквивалента.

+0

Это печатает массив на моей веб-странице. Но не изменяйте значения в моем javascript. Мой код выглядит так: Я хочу изменить значения внутри файла nums.js. – user3179249

+1

@ user3179249 Самый простой способ - добавить новый скриптовый тег перед внешним javascript, например: ' ' – Givi

+0

Пробовал так, но мой массив в nums.js не перезаписывается. – user3179249

0

вы также можете использовать json_encode(), но это возможно только с PHP 5.2 подробнее: http://us3.php.net/manual/fr/function.json-encode.php

или вы можете использовать эту функцию:

function php2js ($var) { 
    if (is_array($var)) { 
        $res = "["; 
        $array = array(); 
        foreach ($var as $a_var) { 
            $array[] = php2js($a_var); 
        } 
        return "[" . join(",", $array) . "]"; 
    } 
    elseif (is_bool($var)) { 
        return $var ? "true" : "false"; 
    } 
    elseif (is_int($var) || is_integer($var) || is_double($var) || is_float($var)) { 
        return $var; 
    } 
    elseif (is_string($var)) { 
        return "\"" . addslashes(stripslashes($var)) . "\""; 
    } 
    return FALSE; 
} 
+0

Это ПЕРВОЕ предложение должно состоять в использовании 'json_encode()', а не для использования в качестве запоздалой мысли. Даже если у вас нет собственного PHP 'json_encode()', там есть библиотеки PHP, чтобы сделать это для вас. Вы не должны вручную создавать JSON-представление из массива. –

0

Пока файл JavaScript в настоящее время анализируются PHP перед отправкой клиенту, то это должно работать:

<?php echo "var nums=[" . implode(',', $nums) . "];"; ?> 
+0

+1, простой, хороший ol 'PHP. Хотя я слышал, что использование одинарных кавычек дает более быструю загрузку страницы;). –

+0

Что вы понимаете под парсией? Я запустил свой javascript в конце страницы следующим образом: user3179249

+0

@DanielLisik Логично, это правда, но я не могу себе представить, чтобы он когда-либо делал заметную разницу. Тем не менее, на самом деле, я обычно использую одиночные кавычки для текстовых строк. – Rob

0

Просто json_encode() массив, а затем выводит его как литерал массива в javascript.

<?php 
$nums = array(10,25,52,32,35,23); 
$nums_json = json_encode($nums); 
?> 
<script type="text/javascript"> 
var nums = <?php echo $nums_json; ?>; 
</script> 
Смежные вопросы