zl程序教程

您现在的位置是:首页 >  后端

当前栏目

php 输出 js数组与对象

2023-09-11 14:17:02 时间

js数组(array)和对象(object)区别

数据集合既可以用数组表示,也可以用对象表示,且each打印效果相同

数组表示有序数据的集合,而对象表示无序数据的集合。如果数据的顺序很重要,就用数组,否则就用对象。

例如数组:

var a=[1,2,3,4];

例如对象:

var a={"province":"山东","city":"济南","address":"解放路886号"};

数组的数据没有”名称”(name),对象的数据有”名称”(name)


 

 

php输出数组-对象,原始数据结构

 

#   sid     sname     mid       mname
#   Jay     周杰伦    1001     七里香
#   Jay     周杰伦    1002     霍元甲
#   Jay     周杰伦    1003     11月的肖邦
#   Jay     周杰伦    1004     东风破
#   Eason   陈奕迅    2001     十年
#   Eason   陈奕迅    2002     稳稳的幸福 

将数据按照歌手分组,music为子数组,输出json

要输出的结构:

$data = [
    [
        'sid' => "Jay",
        'sname' => '周杰伦',
        'music' => [
            [
                'mid' => '1001',
                'mname' => '七里香',
            ],
            [
                'mid' => '1002',
                'mname' => '霍元甲',
            ],
            [
                'mid' => '1003',
                'mname' => '11月的肖邦',
            ],
            [
                'mid' => '1004',
                'mname' => '东风破',
            ],
        ],
    ],
    [
        'sid' => "Eason",
        'sname' => '陈奕迅',
        'music' => [
            [
                'mid' => '2001',
                'mname' => '十年',
            ],
            [
                'mid' => '2002',
                'mname' => '稳稳的幸福',
            ],
        ],
    ],
];

js

[
  {
    "sid": "Jay",
    "sname": "周杰伦",
    "music": [
      {
        "mid": "1001",
        "mname": "七里香"
      },
      {
        "mid": "1002",
        "mname": "霍元甲"
      },
      {
        "mid": "1003",
        "mname": "11月的肖邦"
      },
      {
        "mid": "1004",
        "mname": "东风破"
      }
    ]
  },
  {
    "sid": "Eason",
    "sname": "陈奕迅",
    "music": [
      {
        "mid": "2001",
        "mname": "十年"
      },
      {
        "mid": "2002",
        "mname": "稳稳的幸福"
      }
    ]
  }
]

第一步,php原数组:

$music = [
    0 => [
        'sid' => "Jay",
        'sname' => '周杰伦',
        'mid' => '1001',
        'mname' => '七里香',
    ],
    1 => [
        'sid' => "Jay",
        'sname' => '周杰伦',
        'mid' => '1002',
        'mname' => '霍元甲',
    ],
    2 => [
        'sid' => "Jay",
        'sname' => '周杰伦',
        'mid' => '1003',
        'mname' => '11月的肖邦',
    ],
    3 => [
        'sid' => "Jay",
        'sname' => '周杰伦',
        'mid' => '1004',
        'mname' => '东风破',
    ],
    4 => [
        'sid' => "Eason",
        'sname' => '陈奕迅',
        'mid' => '2001',
        'mname' => '十年',
    ],
    5 => [
        'sid' => "Eason",
        'sname' => '陈奕迅',
        'mid' => '2002',
        'mname' => '稳稳的幸福',
    ],
];

第二步,分组

$data = [];

foreach ($music as $key => $value) {
    $sid_group = $value['sid'];
    $data[$sid_group][$key] = $value;
}
print_r($data);

打印分组

Array
(
    [Jay] => Array
        (
            [0] => Array
                (
                    [sid] => Jay
                    [sname] => 周杰伦
                    [mid] => 1001
                    [mname] => 七里香
                )

            [1] => Array
                (
                    [sid] => Jay
                    [sname] => 周杰伦
                    [mid] => 1002
                    [mname] => 霍元甲
                )

            [2] => Array
                (
                    [sid] => Jay
                    [sname] => 周杰伦
                    [mid] => 1003
                    [mname] => 11月的肖邦
                )

            [3] => Array
                (
                    [sid] => Jay
                    [sname] => 周杰伦
                    [mid] => 1004
                    [mname] => 东风破
                )

        )

    [Eason] => Array
        (
            [4] => Array
                (
                    [sid] => Eason
                    [sname] => 陈奕迅
                    [mid] => 2001
                    [mname] => 十年
                )

            [5] => Array
                (
                    [sid] => Eason
                    [sname] => 陈奕迅
                    [mid] => 2002
                    [mname] => 稳稳的幸福
                )

        )

)

第三步,输出json结构

$data_temp = [];
foreach ($data as $key => $value) {
    $t = [];
    $t['sid'] = $key;
    $i = 0;
    foreach ($value as $fvalue) {
        $t['sname'] = $fvalue['sname'];
        $t['music'][$i]['mid'] = $fvalue['mid'];
        $t['music'][$i]['mname'] = $fvalue['mname'];
        $i++;
    }
    $data_temp[] = $t;
}
print_r($data_temp);
echo json_encode($data_temp);