Как использовать значение массива из php в javascript? - PullRequest
6 голосов
/ 02 февраля 2010

для меня всегда был вопрос, как я могу использовать значение массива в javascript, в то время как этот массив определен в моих сценариях php

Например, рассмотрите чтение некоторых значений из файла и используйте его в javascript.

что ты планируешь сделать?

Ответы [ 5 ]

15 голосов
/ 02 февраля 2010

Вы можете использовать функцию json_encode, чтобы безопасно возвращать объект JSON, который вы можете использовать непосредственно в JavaScript:

<?php
  $phpArray = array("foo", "bar", "baz");
  //....
?>

<script type="text/javascript">
var jsArray = <? echo json_encode($phpArray); ?>;
</script>

Выходы:

<script type="text/javascript">
var jsArray = ["foo","bar","baz"];
</script>
3 голосов
/ 02 февраля 2010

Как то так?

<?php
  # create PHP array:
  $php_array = array("one", "two", "three");

  # "pass" php array to JS array:
  echo "<script language='JavaScript'>\n";
  echo "var js_array = new Array();\n";

  $ix = 0;
  foreach($php_array as $key => $value) {
     echo "js_array[$key] = $value;\n";
  }

  # Rest of JavaScript.....
  echo "</script>\n";
?>

И, возможно, для получения дополнительной информации:
http://www.scratch99.com/2008/03/creating-javascript-array-dynamically-from-php-array/

2 голосов
/ 02 февраля 2010

JSON - ваш выбор, поскольку в некоторых версиях PHP 5.x PHP содержит функцию json_encode().

<script type="text/javascript">
var arr = <?php echo json_encode($php_array); ?>
</script>

Как обычно, некоторые хорошие парни написали функции json_encode () для более старой версии PHP, ознакомьтесь с комментариями на php.net .

1 голос
/ 02 февраля 2010

Вариант с PHP на JS без расширения json, с использованием join / implode и конструкции без цикла:

<?php
$array= array('one','two','three');
$js_array= '["'. join('","', $array) .'"]';
?>
<script type="text/javascript">
var js_array= <?php echo $js_array;?>;
alert(js_array);
</script>
1 голос
/ 02 февраля 2010

Массив в вашем PHP должен каким-то образом быть представлен JavaScript. Если вы хотите, чтобы массив был доступен JS при начальной загрузке страницы, вы можете сделать это следующим образом:

<script type="text/javascript">
    myJSArray = <?php echo function_that_generates_array_in_js_syntax($myPHPArray); ?>;
</script>

Если переменная не требуется создавать при начальной загрузке страницы, вы можете сделать что-то подобное, но использовать вызов AJAX. Просто попросите ваш PHP-скрипт ответить массивом, отформатированным для JS, и сохраните результат вызова в вашей переменной JS.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...