2015-04-02 115 views
0

我写了一个脚本,它将在shell上执行时返回JSON输出。php shell命令返回JSON

{ 
    "count": 1, 
    "virtualmachine": [ 
    { 
     "account": "admin", 
     "affinitygroup": [], 
     "cpunumber": 2, 
     "cpuspeed": 1000, 
     "created": "2015-04-02T12:11:41-0400", 
     "details": { 
     "hypervisortoolsversion": "xenserver56" 
     }, 
     "diskofferingid": "6fec5275-9ec3-4033-8052-b743b3f89303", 
     "diskofferingname": "Medium", 
     "zoneid": "60763583-8ab3-436e-8acd-87c783729cdc", 
     "zonename": "Toronto" 
    } 
    ] 
} 

当我从我的php代码运行这个shell命令时,我无法打印这个输出。

exec('cloud_query " list virtualmachines listall=true account=$user"', $outputArray); 
print_r ($outputArray, false); 

我得到如下:

Array 
(
    [0] => { 
    [1] => "count": 1, 
    [2] => "virtualmachine": [ 
    [3] =>  { 
    [4] =>  "account": "admin", 
    [5] =>  "affinitygroup": [], 
    [6] =>  "cpunumber": 2, 
    [7] =>  "cpuspeed": 1000, 
    [8] =>  "created": "2015-04-02T12:11:41-0400", 
    [9] =>  "details": { 
    [10] =>   "hypervisortoolsversion": "xenserver56" 
    [11] =>  }, 
    [12] =>  "diskofferingid": "6fec5275-9ec3-4033-8052-b743b3f89303", 
    [13] =>  "diskofferingname": "Medium", 
    [52] =>  "serviceofferingid": "76d3bacc-eba4-4080-ba72-7c0b524f8027", 
    [53] =>  "serviceofferingname": "Large Instance", 
    [54] =>  "state": "Running", 
    [55] =>  "tags": [], 
    [56] =>  "templatedisplaytext": "ubuntu-12.04.4-server-amd64", 
    [57] =>  "templateid": "cbd3ceb0-b615-440e-a0fa-dbcaa234cb8f", 
    [58] =>  "templatename": "ubuntu-12.04.4-server-amd64", 
    [59] =>  "zoneid": "60763583-8ab3-436e-8acd-87c783729cdc", 
    [60] =>  "zonename": "Toronto" 
    [61] =>  } 
    [62] => ] 
    [63] => } 
) 

我怎样才能去掉数组,并从shell命令打印纯JSON?

谢谢

回答

1

你捕捉exec -ed命令的输出线的排列。将其转换为一个字符串,只需加入其所有的值以换行符:

implode("\n", $outputArray); 
0

指定数组将与命令输出的每一行进行填充。

分离出这一点:

echo implode("\n", $output);