2015-04-02 206 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);