如何在PHP中迭代字典数组

时间:2014-06-04 02:47:00

标签: php arrays

我有以下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"}

1 个答案:

答案 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('&nbsp;', 5) . "$index - $element <br/>";
    }
}

输出:

Entry 0 
   ky1 - foo 
   ky2 - bar 
Entry 1 
   ky1 - foo2 
   ky2 - bar2 

Sample Fiddle