【问题标题】:Converting PHP array to a single JSON object using js使用 js 将 PHP 数组转换为单个 JSON 对象
【发布时间】:2018-05-19 11:00:28
【问题描述】:

我有一个 php 数组(索引为零),我通过回显它的 json_encode 格式直接发送到前端。

我希望 JSON 对象看起来像

{
    'A': null,
    'B': null,
    'C': null
}

但是当我尝试使用 console.log 时,即

console.log(<?php echo json_encode($array); ?>)

它的打印js数组

当我在后端尝试 print_r($array) 时,它也会打印

[array] => Array
    (
        [0] => A
        [1] => B
        [2] => C

    )

提前致谢

【问题讨论】:

  • 你能显示php数组吗?
  • 问题已更新,请参阅
  • 这不是一个零索引数组,它是一个关联数组。所以我猜你实际上拥有的是一个多维零索引数组,它充满了关联数组,你正在输出整个东西。
  • 如果没有在后端对数组进行某种转换,您将永远无法得到您所期望的。必须修改创建 PHP 数组的代码。

标签: javascript php arrays json codeigniter


【解决方案1】:

此代码为您提供所需的输出

$array = array
    (
        '0' => 'A',
        '1' => 'B',
        '2' => 'C'

    );
    $array = array_fill_keys($array, NULL);

echo json_encode($array);

输出:

{"A":null,"B":null,"C":null}

Javascript:

<script type="text/javascript">
<!--
var data =<?php echo json_encode($array); ?>;

console.log(data);
//-->
</script>

输出:

 Object {A: null, B: null, C: null}
    A:null
    B:null
    C:null

【讨论】:

    【解决方案2】:

    为什么不把你的 PHP 数组变成一个 ['A' => null, 'B' => null...]

    否则,您的另一个选择是:

       $newArray = array_fill_keys($tags, null);
       json_encode($newArray);
    

    这将获取 $tags 中的每个数组元素,并将其设置为 newArray 中的索引,值为 null。

    根据您的代码,您将拥有:

    <?php $newArray = array_fill_keys($tags, null);
    $json = json_encode($newArray); ?>
    console.log(JSON.parse(<?= $json; ?>));
    

    【讨论】:

    • 那显示 Uncaught SyntaxError: Unexpected token , in JSON at position 0 at JSON.parse () at HTMLDocument. (question:533) at j (jquery.min.js: 2) 在 k (jquery.min.js:2)
    • 我的错误@pokemon,根据阅读您的帖子,我打错了。试试我的编辑。您不需要“array_keys” - 使用我的确切代码,我能够得到您正在寻找的东西。
    猜你喜欢
    • 2013-08-28
    • 1970-01-01
    • 2020-11-02
    • 1970-01-01
    • 1970-01-01
    • 2018-02-06
    • 2014-11-09
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多