在将PHP数组分配给JS数组时,数组值的每个字母表都会被拆分

时间:2016-05-31 19:15:07

标签: javascript php

这是代码:

<?php
$array = array('RANAJI', 'YAARA MAULA', 'AARAMBH', 'AISI SAZAA', 'SHEHER', 'BEEDO', 'DUNIYA', 'RAAT KE MUSAFIR');
foreach ($array as $item) echo $item.'<br>';
?>

<script>
var i;
var name = <?php echo json_encode($array); ?>;
for(i=0;i<name.length;i++){
document.write(name[i]+'<br>');
}
</script>

这是输出:

  

RANAJI

     

YAARA MAULA

     

AARAMBH

     

AISI SAZAA

     

SHEHER

     

BEEDO

     

DUNIYA

     

RAAT KE MUSAFIR

     

[R

     

A

     <磷>氮

     

A

     

Ĵ

     

     

     

ý

     

A

     

A

     

[R

     

A

     

中号

     

A

     

û

     

     

A

     

     

A

     

A

     

A

     

中号

     

     

ħ

     

     

A

     

     

取值

     

     

取值

     

A

     

ž

     

A

     

A

     

     

取值

     

ħ

     

电子

     

ħ

     

电子

     

[R

     

     

     

电子

     

电子

     

d

     

0

     

     

d

     

û

     <磷>氮

     

     

ý

     

A

     

     

[R

     

A

     

A

     

Ť

     

ķ

     

电子

     

中号

     

û

     

取值

     

A

     

˚F

     

     

[R

那么,如何以与存储在PHP数组中相同的方式存储值?

2 个答案:

答案 0 :(得分:3)

问题是您是在全局范围内执行此操作。已有name property on the global window object。除其他原因外,人们会告诉你不要在全局范围内声明变量。

正在发生的事情是你的数组被串联成一个字符串值,以便将它保存到window.name属性中,从而为什么要name[i]检索一个字母而不是单词。

将您的变量命名为其他内容

var i;
var nameArr = <?php echo json_encode($array); ?>;
for(i=0;i<nameArr.length;i++){
    document.body.insertAdjacentHTML('beforeend',nameArr[i]+'<br>');
}

另外尽量不要使用document.write还有其他可用于插入html / text的DOM方法/属性

答案 1 :(得分:1)

变量'name'是问题所在,将其更改为'foo'并且它应该可以正常工作

<?php
$array = array('RANAJI', 'YAARA MAULA', 'AARAMBH', 'AISI SAZAA', 'SHEHER', 'BEEDO', 'DUNIYA', 'RAAT KE MUSAFIR');
foreach ($array as $item) echo $item.'<br>';
?>

<script>
var i;
var foo = <?php echo json_encode($array); ?>;
for(i=0;i<foo.length;i++){
document.write(foo[i]+'<br>');
}
</script>