我有以下PHP代码:
<?php
exec("./mycode.py", $out)
var_dump($out)
?>
它产生以下输出:
array(2) { [0]=> string(28) "{"ky2": "bar", "ky1": "foo"}" [1]=> string(30) "{"ky2": "bar2", "ky1": "foo2"}" }
如何迭代上面的输出并打印结果?
Entry 0
ky1 - foo
ky2 - bar
Entry 1
ky1 - foo2
ky2 - bar2
他们的Python代码(mycode.py
)是这样的:
#!/usr/bin/env python
import json
dict1 = {'ky1':'foo', 'ky2':'bar'}
dict2 = {'ky1':'foo2', 'ky2':'bar2'}
print json.dumps(dict1)
print json.dumps(dict2)
打印出来:
{"ky2": "bar", "ky1": "foo"}
{"ky2": "bar2", "ky1": "foo2"}
答案 0 :(得分:5)
你需要在这一个上与json_decode()
一起使用一个foreach循环。在循环内部,每次解码它们。考虑这个例子:
$out = array(
array('{"ky2": "bar", "ky1": "foo"}'),
array('{"ky2": "bar2", "ky1": "foo2"}'),
);
$new_out = array();
foreach($out as $key => $value) {
$values = json_decode($value[0], true); // <-- second parameter
// set to TRUE to force return as an array
ksort($values);
$new_out['Entry '.$key] = $values;
}
echo '<pre>';
print_r($new_out);
echo '</pre>';
示例输出:
Array
(
[Entry 0] => Array
(
[ky1] => foo
[ky2] => bar
)
[Entry 1] => Array
(
[ky1] => foo2
[ky2] => bar2
)
)
编辑:或者也许你只是想要一个回声,我不知道。
foreach($out as $key => $value) {
$values = json_decode($value[0], true);
ksort($values);
// or just plain echo
echo "Entry $key <br/>";
foreach($values as $index => $element) {
echo str_repeat(' ', 5) . "$index - $element <br/>";
}
}
输出:
Entry 0
ky1 - foo
ky2 - bar
Entry 1
ky1 - foo2
ky2 - bar2