для меня всегда был вопрос, как я могу использовать значение массива в javascript, пока этот массив определен в моих php-скриптах
Например, рассмотрим возможность чтения некоторых значений из файла и использования его в javascript.
что ур планирует сделать так?
Вы можете использовать функцию 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>
Что-то вроде этого?
<?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/
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 .
Массив в вашем PHP должен каким-то образом подвергаться JavaScript. Если вы хотите, чтобы массив был доступен JS при начальной загрузке страницы, вы можете сделать это следующим образом:
<script type="text/javascript"> myJSArray = <?php echo function_that_generates_array_in_js_syntax($myPHPArray); ?>; </script>
Если переменную не нужно создавать на начальной загрузке страницы, вы можете сделать что-то подобное, но использовать вызов AJAX. Просто попросите свой PHP-скрипт ответить на массив, отформатированный для JS, и сохраните результат вызова в вашей переменной JS.
Вариант PHP для JS без расширения json, используя join / implode и no loop construct:
<?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>