【问题标题】:Not Sequencial Array to JSON (Keys are string)不是 JSON 的顺序数组(键是字符串)
【发布时间】:2015-10-22 14:51:09
【问题描述】:

我正在尝试使用自定义数组键创建自定义数组。 直到这里一切正常。

foreach ($results as $value){
        // $value['month'] is a string (varchar)
        $return[$value['month']]['working']     = $value['work_job'];

}

但是,当我将其作为 json 返回时,我会遇到以下情况。

"jobs": { // Here i need [ instead of {, how can i fix it?
"2": {
"working": "1"
},
"5": {
"working": "4"
},
"6": {
"working": "3"
}
} 

$return = array("jobs"  => $return,
                "testing"   => 'testing');

Tks

【问题讨论】:

  • 您没有不显示该代码。没有 contentjobs
  • 你能提供你想要的最终结果吗?简单地将作业更改为数组将使该语法的月份无效。那么你想要什么结果呢?
  • 基本上,我认为你不能。 JS 数组没有非顺序数组,所以它会生成一个对象。这真的是个问题吗?
  • 但是月份呢,您要保留月份数据吗?因为如果是这样,那可能是一个包含对象/关联数组的数组,其中月份作为键并作为另一个键工作。
  • @JonStirling 已经解释了为什么会发生这种情况以及您可以做什么。而是处理对象。如果您不能告诉我们原因,以便我们为您的真正问题找到解决方案。

标签: php jquery arrays json ajax


【解决方案1】:

这里面有点概念问题。

在 PHP 中,哈希或字典用数组表示,而不是在其他语言中。

如果你的数组是用这种语法组成的

$array['key'] = $value;

它将被 json 编码器解释为一个对象。它将理解 $array 是一个对象,'key' 是 $array 的一个属性,而 $value 是该属性的值,像这样编码。

array = { key: value }

【讨论】:

  • 这可能会使 OP 感到困惑,因为您没有解释为什么 PHP 中的非连续整数键的编码方式与连续整数键的编码方式不同。
  • @BrunoFontainha 我已经在 cmets 中对您的问题进行了解释...... JS 没有非顺序数组。
  • @BrunoFontainha 哦,拜托,我还告诉了你一个解决方案在你的问题的 cmets 中
  • @Jon Sirling 我非常明白你的回答非常感谢!
猜你喜欢
  • 2014-04-15
  • 2019-01-19
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2010-12-13
  • 1970-01-01
  • 2022-01-27
相关资源
最近更新 更多