-1

你好,我在这里看到了几个这样的问题,但我发现没有一个有任何用处。我整晚都在想办法解决这个问题,如果我有一个严格的答案,我将不胜感激。我正在尝试从 json 输出中获取特定的东西。在 python 中我会知道如何做到这一点,但我不知道如何在 php 中进行。json输出是

{"sentences":[{"trans":"ã“ã‚“ã«ã¡ã¯","orig":"hello","translit":"Kon'nichiwa","src_translit":""}],"dict":[{"pos":"nom","terms":["今日ã¯"],"entry":[{"word":"今日ã¯","reverse_translation":["hello","good day"]}],"base_form":"hello","pos_enum":1}],"src":"en","spell":{"spell_html_res":"Hello!","spell_res":"Hello!","correction_type":[10],"related":1},"server_time":2}

我想要摆脱的只是“反式”,我知道你必须使用 foreach 的东西来做到这一点。我试过了

$jsondata = json_decode($jsonstuff);
foreach($jsondata as $ret->sentences) {
$rets = $ret->trans;}
print $rets;

然而,这没有任何作用。如果有人可以请帮助,将不胜感激。

4

3 回答 3

2

尝试

$jsondata = json_decode($jsonstuff);
foreach($jsondata->sentences as $ret) {
    $rets = $ret->trans;
    print $rets;
}
于 2013-08-12T04:36:25.907 回答
1

在这种情况下,让 json_decode 返回一个数组而不是一个 php 对象可能会有所帮助。您可以通过添加可选的第二个参数来做到这一点。

由于您的示例中的句子是一个数组,因此您可以看到,至少通过此输入,您可以通过引用数组的元素 0 轻松获取 trans 元素。

$jsondata = json_decode($jsonstuff, true);

echo $jsondata['sentences'][0]['trans'];

// See full array
var_dump($jsondata);
于 2013-08-12T04:45:41.953 回答
0

您必须格式化您的 foreach 代码

foreach($jsondata->sentences as $ret) {促成

foreach($jsondata as $ret->sentences) {

格式化代码

$jsondata = json_decode($jsonstuff);
foreach($jsondata->sentences as $ret) {
    $rets = $ret->trans;
    print $rets;
}
于 2013-08-12T04:46:25.993 回答