2013-09-21 54 views
1

展望输出JSON的格式如下:建立JSON输出多维数组

[{"Montgomery":[{"red":"12:34:56","yellow":"11:44:46","orange":"10:54:36","green":"9:24:26","purple":"8:14:16"}],"Suburban":[{"red":"12:34:56","yellow":"11:44:46","orange":"10:54:36","green":"9:24:26","purple":"8:14:16"}],"Shady Grove Adventist":[{"red":"12:34:56","yellow":"11:44:46","orange":"10:54:36","green":"9:24:26","purple":"8:14:16"}],"Holy Cross":[{"red":"12:34:56","yellow":"11:44:46","orange":"10:54:36","green":"9:24:26","purple":"8:14:16"}],"Washington Adventist":[{"red":"12:34:56","yellow":"11:44:46","orange":"10:54:36","green":"9:24:26","purple":"8:14:16"}]}] 

我的代码:

$xyz[] = array("Montgomery"=> array("Red" => "12:00", "Yellow" => "14:00")); 
$xyz[] = array("Suburban"=> array("Yellow" => "16:00")); 

echo '[' . json_encode($xyz) . ']'; 

我的结果:

[[{"Montgomery":{"Red":"12:00","Yellow":"14:00"}},{"Suburban":{"Yellow":"16:00"}}]] 

回答

2

这会给你的结构:

$container = array(); 
$container['Montgomery'] = array(array('red' => '12:34:56', 'yellow' => '11:44:46')); 
$container['Suburban'] = array(array('red' => '12:34:56', 'yellow' => '11:44:46')); 
echo json_encode(array($container)); 
+0

完美,这正是我所期待的...... @wwwslinger:我想把它全部放在一个数组中,而不是创建一个类,但是出色的选项,谢谢你们两个。 – BarclayVision

1

你可以使用的对象,这样的事情(你会希望把它清理干净了一下):

class Church { 
    public $red = ""; 
    public $yellow = ""; 
    public $orange = ""; 
    public $green = ""; 
    public $purple = ""; 
} 
class XYZ { 
    public $Montgomery = new Church(); 
    public $Shad_Grove_Adventist = new Church(); 
    public $Holy_Cross = new Church(); 
    public $Washington_Adventist = new Church(); 
} 

$xyz = new XYZ(); 
$xyz->Montgomery->red = "12:00"; 
... 

然后输出你的JSON:

echo '[' . json_encode($xyz) . ']'; 

这不会是完美的匹配您所需的JSON输出,但它会提供更好的可读性和更多的灵活性。

+0

这是一个有效的空间变量吗? '公共$ Shad_Grove Adventist'? ;) – Jakub

+0

对不起,它需要下划线。 – wwwslinger

0

您希望输出有一个数组[]作为其顶级项目。 JSON中的[]对应于PHP中的数字数组。 JSON数组用于包含有序的项目集合。

您的顶级数组包含一个项目,一个JSON对象{}。 PHP对象(stdClass)或关联数组将在JSON中转换为此。 JSON对象用于创建键值对的集合。

要生成所需的输出,建立你的数据在PHP这样的:

// Top-level numeric array. 
$container = array(); 

// Only item in top-level array. 
$item = array(); 

// The value of each of these items will be a numeric array. 
$item['Montgomery'] = array(); 

// Create a new associative array, and push that onto the list array. 
$subItem = array("red" => "12:34:56", 
     "yellow" => "11:44:46", 
     "orange" => "10:54:36", 
     "green" => "9:24:26", 
     "purple" => "8:14:16"); 
$item['Montgomery'][] = $subItem; 
$container[] = $item; 

// ...Add more items... 

print json_encode($container); 

或者,如果你想一次建立了一切:

$container = array(
    array(
     "Montgomery" => array(
      array("red" => "12:34:56", 
       "yellow" => "11:44:46", 
       "orange" => "10:54:36", 
       "green" => "9:24:26", 
       "purple" => "8:14:16" 
      ) 
     ) 
     // ...More items... 
    ) 
); 

print json_encode($container); 

注意,也有一些地方是在数组中有一个数组。这是建立一个关联数组,并将其添加为数组数组的唯一成员。这对应于在[]内有{}