2015-04-02 3 views
0

Я написал сценарий, который будет возвращать вывод 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-кода.

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] => } 
) 

Как я могу вырезать массива и напечатать простой JSON из командной оболочки?

Спасибо

ответ

1

Вы воспринимаете вывод -ED команды exec на массив строк. Для того, чтобы преобразовать его в строку, просто объединить все свои ценности с новой строки:

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

Указанный массив будет заполнен каждой строке вывода команды.

Чтобы выделить это использование:

echo implode("\n", $output); 
Смежные вопросы