如何使用数组值创建数组?

时间:2018-06-19 10:21:02

标签: php

我有一些我需要组织的数据,所以我可以将其转换为JSON。我通过查询获得数据,该查询给出了结果。一些结果是:

NAME - NUMBER, Direction, Color 
ABCD - 1, Left, Blue
ABCD - 2, Right, Red
ABCD - 3, Down, Green
EFGH - 1, UP, Yellow
EFGH - 2, Down, Orange

我需要将这些数据转换成这样的东西(所以我可以json_encode它):

$array = array({
  'name'=>'ABCD'
  [{ 'number'=>'1', 'direction'=>'left', 'color'=>'blue'} 
   { 'number'=>'2', 'direction'=>'right', 'color'=>'red' } 
   { 'number'=>'3', 'direction'=>'down', 'color'=>'green' }
  ]}
   { 'name'=>'EFGH'
  [{ 'number'=>'1', 'direction'=>'up', 'color'=>'yellow' } 
   { 'number'=>'2', 'direction'=>'down', 'color'=>'orange' }
  ]}
);

不确定它是否正确完成,但我想结果应该如何。

2 个答案:

答案 0 :(得分:0)

生成有效数组,然后生成json_encode()

<?php

$array = [
    'ABCD' => [
        ['number'=>'1', 'direction'=>'left', 'color'=>'green'],
        ['number'=>'2', 'direction'=>'right', 'color'=>'red'],
        ['number'=>'3', 'direction'=>'down', 'color'=>'green']
    ],
    'EFGH' => [
        ['number'=>'1', 'direction'=>'up', 'color'=>'yellow'],
        ['number'=>'2', 'direction'=>'down', 'color'=>'orange']
    ]
];

echo json_encode($array);

使用echo $array['EFGH'][0]['direction'];

之类的内容访问数据

答案 1 :(得分:0)

首先生成一个与您建议的类似的数组。然后json_encode它:

<?php
$data = array(
array("NAME" =>"ABCD", "NUMBER" => "1", "Direction" => "Left", "Color" => "Blue"),
array("NAME" =>"ABCD", "NUMBER" => "2", "Direction" => "Right", "Color" => "Red"),
array("NAME" =>"ABCD", "NUMBER" => "3", "Direction" => "Down", "Color" => "Green"),
array("NAME" =>"EFGH", "NUMBER" => "1", "Direction" => "UP", "Color" => "Yellow"),
array("NAME" =>"EFGH", "NUMBER" => "2", "Direction" => "Down", "Color" => "Orange")
);

$output = array();
foreach($data as $array) {
    $key = $array["NAME"];
    if(!isset($output[$key])) $output[$key] = array();
    $output[$key][] = $array;
}

//echo "<PRE>";
//print_r($output);
//echo "</PRE>";

echo json_encode($output);

?>