我编写了一个脚本,当它在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?
谢谢
答案 0 :(得分:1)
您正在将exec
- ed命令的输出捕获到一个行数组。要将其转换为字符串,只需使用换行符加入其所有值:
implode("\n", $outputArray);
答案 1 :(得分:0)
指定的数组将填充命令的每一行输出。
将这种用法分开:
echo implode("\n", $output);