【问题标题】:json_encode returns undefined with array of non-associative arraysjson_encode 返回未定义的非关联数组数组
【发布时间】:2013-05-25 22:35:06
【问题描述】:

我尝试在 PHP(版本 5.3.13)中将数据编码为 JSON 并将其发送到 JavaScript。 我的问题是: 当我编码一个非关联数组的数组时,它返回未定义:

$arr = array(array(1, 2, 3));
echo json_encode($arr); // outputs nothing ("")

你能帮帮我吗?

编辑:我的操作系统是 FreeBSD 8.1-RELEASE

编辑:如果有帮助,我会在 MODX Evo 网站上使用它。我使用这个 php-script 将其称为表单网页,一切正常。但后来我创建了一个包含 1 行代码的片段 - 包括这个 php 脚本。现在我调用一个网页,内容中只有这个 sn-p。 逻辑上是一样的,但现在不行了。

【问题讨论】:

  • 它返回的json数据..eval.in/31887
  • 我非常怀疑...您能否在 3v4l.orgideone.comcodepad.org 或类似的在线小提琴网站上重现该问题?
  • 有 PHP 版本 5.4.6,我有 5.3.13。我无法更新它,因为其他一些脚本可能会停止工作。
  • @ВасилийВасильевич 3v4l.org/NOag3 也适用于 5.3
  • php 5.2.0 的输出 - 3v4l.org/jBr55 [[1,2,3]]

标签: php return undefined json


【解决方案1】:

显示所有错误。
并使用var_dump 而不是echo

<?php

ini_set('display_errors', 1);
error_reporting(E_ALL);

$json = json_encode(array(array(1, 2, 3)));
var_dump($json);

【讨论】:

  • 我用了你所有的建议,var_dump(json_encode($json)) 是输出string(9) "" 。我不明白这是什么意思
  • 是的,string(9) "" 最后是空字符串和空格
  • 我认为string(9)[[1,2,3]] 编码值的长度.. 但是为什么会有一个空字符串呢?
  • echo rawurlencode($json); 输出 %5B%5B1%2C2%2C3%5D%5D - 有效编码值
  • 您是在 WebBrowser 还是命令行上检查此行为?
【解决方案2】:

实际上你的脚本运行良好。

[[1,2,3]] //Output 

我的 PHP 版本 5.3.8 请您介意提及您的 php 版本。 可能是你的 PHP 版本低于 5.2

【讨论】:

  • 我在上面提到过 - 它是 PHP 5.3.13
  • 抱歉,我没有注意到!你的PHP版本没问题
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2023-04-08
  • 1970-01-01
  • 2013-03-08
  • 2011-02-24
  • 1970-01-01
相关资源
最近更新 更多