Как мне назначить массив PHP массиву JS?

#php #javascript

#php #javascript

Вопрос:

Ниже приведен мой код, в котором массиву php $keys присвоен массив JS var keysArr, но значение, отображаемое в окне предупреждения, неверно.

Таким образом, что-то не так при назначении массива Php массиву Js.

Кто-нибудь может мне помочь? Заранее спасибо!

 <?php
$keys = array(1, 2, 3, 4);
?>
<html>
    <head>
    <script type="text/javascript">
        var keysArr = <?php print $keys?>;
        for (var i = 0; i < keysArr.length;   i){

                    alert(keysArr[i]);

        }
    </script>
    </head>
    <body>
    </body>
</html>
  

Ответ №1:

 var keysArr = <?php json_encode($keys) ?>;
  

требуется PHP > = 5.2.0, но сторонние реализации json_encode() доступны для более старых версий.

Ответ №2:

Попробуйте это, для этого не требуется расширение JSON:

 var keysArr = [ <?php print implode(',', $keys); ?> ];
    for (var i = 0; i < keysArr.length;   i){
        alert(keysArr[i]);
    }
  

Комментарии:

1. Это приведет к ужасной поломке для любого массива, содержащего данные, отличающиеся от чисел

Ответ №3:

 <?php
$keys = array(1, 2, 3, 4);
?>
<html>
    <head>
    <script type="text/javascript">
        var keysArr = Array(<?php foreach($keys as $key) echo (is_numeric($key))? $key : '"'.$key.'"' ;?>);
        for (var i = 0; i < keysArr.length;   i){

                    alert(keysArr[i]);

        }
    </script>
    </head>
    <body>
    </body>
</html>
  

Попробуйте это… Я еще не тестировал его, но он будет печатать числа без кавычек («) и другие вещи с ними.

Ответ №4:

Попробуйте это

 <?php
$keys = array(1, 2, 3, 4);
?>
<html>
    <head>
    <script type="text/javascript">
        var keysArr = Array(<?php echo implode(',',$keys);?>);
        for (var i = 0; i < keysArr.length;   i){

                    alert(keysArr[i]);

        }
    </script>
    </head>
    <body>
    </body>
</html>
  

с помощью печати вы просто показываете Array , а не правильный код массива для js. Загляните в HTML, который вы генерируете.

Комментарии:

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

2. да, вы правы. Это будет работать только для массивов, содержащих более одного числа.