#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. да, вы правы. Это будет работать только для массивов, содержащих более одного числа.