【问题标题】:PHP - Explicit key in multimensional associative arrayPHP - 多维关联数组中的显式键
【发布时间】:2018-11-26 17:08:45
【问题描述】:

首先,对不起标题,但我不知道该用什么来准确描述这个问题。

回到问题,这就是我想要得到的:

{"0":{"dep":"DIR","user":"10000008","seen":"0000-00-00 00:00:00"},"1":{"dep":"TES","user":"10000008","seen":"0000-00-00 00:00:00"}}

这是我正在使用的实际代码(从输入元素接收数据作为数组)示例:

<input type="text" name="dep[]" />
<input type="text" name="user[]" />

这是我需要“修复”的主要代码:

$user = ($_POST['cc_user']);
$dep =  ($_POST['cc_dep']);

$cc = array();
for($i=0;$i<count($_POST['cc_dep']);$i++) {
    $cc = array();
    $cc['user'] = $user[$i];
    $cc['dep'] = $dep[$i];
    $cc['seen'] = '0000-00-00 00:00:00';
    $x = strval($i);
    $cc2["$x"] = $cc;

    unset($cc);
}

echo json_encode($cc2);

目前,这是结果,而不是我想要的结果:

[{"user":"10000008","dep":"DIR","seen":"0000-00-00 00:00:00"},{"user":"10000001","dep":"admin","seen":"0000-00-00 00:00:00"}]

如您所见,数组的键是不可见的,我需要它来集成我的网站。 我试图指定$i 使用:

  • (string)$i
  • stringval($i)
  • "$i"

但我没有设法解决问题。有人可以帮忙吗,即使这很容易?

提前致谢!

【问题讨论】:

  • 你为什么要用括号括住你的$_POST
  • 我不明白,你到底在问什么?
  • 为什么不在循环结束时只使用$cc2[] = $cc
  • @WillardSolutions,你没看错,这就是我问他的问题,即使他还没有声明 $cc2 变量,只在循环中使用。所以不声明变量不会产生效果:)
  • @NullPointer 那么请解释一下,调用echo json_encode($cc2);后OP是如何得到任何结果的?

标签: php arrays json


【解决方案1】:

您可能正在寻找的是强制 JSON 成为一个对象。 非关联数组(所有数字键)以 JSON 格式显示,没有键。在 PHP 中,数字字符串在用作数组键时将转换为整数。
您可以使用附加参数使其成为 JSON 对象。

json_encode($cc2, JSON_FORCE_OBJECT)

请查看json_encode 文档中的示例

【讨论】:

    【解决方案2】:

    这样做。我认为您缺少$cc2 声明。

    $user = ($_POST['cc_user']);
            $dep =  ($_POST['cc_dep']);
    
            $cc2 = array(); //$cc2 should be defined here
            for($i=0;$i<count($_POST['cc_dep']);$i++) {
                $cc = array();
                $cc['user'] = $user[$i];
                $cc['dep'] = $dep[$i];
                $cc['seen'] = '0000-00-00 00:00:00';
                $x = strval($i);
                $cc2["$x"] = $cc;
    
                unset($cc);
            }
    
            echo json_encode($cc2);
    

    【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2013-09-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多