【问题标题】:While assigning a PHP array to a JS array, each alphabet of the values of the array gets split将 PHP 数组分配给 JS 数组时,数组值的每个字母都会被拆分
【发布时间】:2016-09-29 22:47:47
【问题描述】:

这是代码:

<?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>

这是输出:

拉那吉

雅拉毛拉

阿拉巴赫

艾斯萨扎

谢赫

贝多

杜尼亚

拉特克穆萨菲尔

R

一个

没有

一个

J

,

是的

一个

一个

R

一个

M

一个

U

L

一个

,

一个

一个

一个

M

B

H

,

一个

S

S

一个

Z

一个

一个

,

S

H

E

H

E

R

,

B

E

E

D

,

D

U

没有

是的

一个

,

R

一个

一个

T

K

E

M

U

S

一个

F

R

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

【问题讨论】:

  • 那你的问题是什么?
  • 如何以与存储在 PHP 数组中相同的方式存储值?
  • 从 PHP 文件输出 HTML 的结果是什么?它似乎将其视为 Javascript for 循环中的连接字符串。
  • @kb。问题中的输出是该 HTML 页面给出的内容。
  • @VermaJr。我说的是服务器返回的实际 HTML 源代码,它不包含&lt;?php,而是回显的结果。 (但没关系 :),这似乎是一个范围问题。)

标签: javascript php


【解决方案1】:

问题是您在全局范围内执行此操作。已经有一个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 还有其他DOM方法/属性可以用来插入html/文本

【讨论】:

    【解决方案2】:

    变量 '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>
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2017-06-12
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2022-01-16
      • 1970-01-01
      相关资源
      最近更新 更多