需要一个工作才能使用“0”在 PHP 数组中有一个索引,并使用 json_encode() 转换为 JSON


need a workaroung to use '0' has a index in a php array and converting to json with json_encode()

在你回答之前,我知道0返回null,false或空字符串,这就是问题所在。我想知道的是是否有解决方法。

我试图将 php 数组转换为 json,但 json_encode() 函数没有保留索引,我的数组是。

    Array
    (
      [0] => Array
      (
        [0] => Array
          (
            [idCategory] => 1
            [name] => Carteiras
            [parent] => 0
            [weight] => 0
          )
        [1] => Array
          (
            [idCategory] => 2
            [name] => Bolsas
            [parent] => 0
            [weight] => 1
          )
        [2] => Array
          (
            [idCategory] => 3
            [name] => Cintos
            [parent] => 0
            [weight] => 2
          )
        [3] => Array
          (
            [idCategory] => 4
            [name] => Chinelos
            [parent] => 0
            [weight] => 3
          )
        [4] => Array
          (
            [idCategory] => 5
            [name] => Tênis Masculino
            [parent] => 0
            [weight] => 4
          )
        [5] => Array
          (
            [idCategory] => 6
            [name] => Rasteiras
            [parent] => 1
            [weight] => 5
          )
       )
    )

该 json:

{"Menu": [
  [
    {
      "idCategory": "1",
      "name": "Carteiras",
      "parent": "0",
      "weight": "0"
    },
    {
      "idCategory": "2",
      "name": "Bolsas",
      "parent": "0",
      "weight": "1"
    },
    {
      "idCategory": "3",
      "name": "Cintos",
      "parent": "0",
      "weight": "2"
    },
    {
      "idCategory": "4",
      "name": "Chinelos",
      "parent": "0",
      "weight": "3"
    },
    {
      "idCategory": "5",
      "name": null,
      "parent": "0",
      "weight": "4"
    },
    {
      "idCategory": "6",
      "name": "Rasteiras",
      "parent": "1",
      "weight": "5"
    }
  ]
]}

我设置的第一个数组

    $i = 0;
    $array[$i] = $somearray;

包含 idCategory、名称、父级和权重的数组,我使用

    $somearray[] = $node;

如果我使用

    $array[$i . '_id'] = $somearray;

JSON 只接受字符串作为键。最简单的解决方法是用单引号封装索引,这将产生与 $i.'_id' 相同的效果。

   Array
(
  ['0'] => Array
  (
    ['0'] => Array
      (
        [idCategory] => 1
        [name] => Carteiras
        [parent] => 0
        [weight] => 0
      )
  )
)

如果你想转换一个变量,你可以使用双引号,如"$1",或者你可以使用 strval() 函数将整数转换为字符串。

另请参阅:使用数字作为"索引"(JSON)以及:在 PHP 中将整数转换为字符串

相关文章: