在JSON和PHP中处理数组时出现问题
我将此数据保存在JSON中:在JSON和PHP中处理数组时出现问题,php,json,Php,Json,我将此数据保存在JSON中: "sentences_tone": [ { "sentence_id": 0, "text": "I hate these new features On #ThisPhone after the update.", "tones": [ { "score": 0.637279, "tone_id": "anger", "tone_name": "Anger" } ] },... 在PHP中显示结
"sentences_tone": [
{
"sentence_id": 0,
"text": "I hate these new features On #ThisPhone after the update.",
"tones": [
{
"score": 0.637279,
"tone_id": "anger",
"tone_name": "Anger"
}
]
},...
在PHP中显示结果时,出现以下错误:
英勇:0.931034
感伤:雷瓦
这是不可原谅的。
注意:第28行的未定义偏移量:2 in/Applications/XAMPP/xamppfiles/htdocs/toneAnalyzer/test.php
代码是:
$result=curl_exec ($ch);
curl_close ($ch);
$jsonObj = json_decode($result, true);
$i = 0;
foreach($jsonObj["sentences_tone"] as $value){
echo 'valor: '.$value['tones'][$i]['score'];
echo 'sentimento: '.$value['tones'][$i]['tone_name'];
echo 'texto: '.$value['text'];
$i++;
};
正如Sorix在评论中所说的,但最好的猜测是您面临的问题是您的循环,您有以下几点:
foreach($jsonObj["sentences_tone"] as $value){
echo 'valor: '.$value['tones'][$i]['score'];
echo 'sentimento: '.$value['tones'][$i]['tone_name'];
echo 'texto: '.$value['text'];
$i++;
};
foreach($jsonObj["sentences_tone"] as $value){
echo 'valor: '.$value['tones']['score'];
echo 'sentimento: '.$value['tones']['tone_name'];
echo 'texto: '.$value['text'];
};
从你的数据来看,我们可以看到它是这样的
sentences_tone
tones
tone data
这意味着使用您已经使用的格式将无法工作,因为音调数据上没有整数索引,因此您只需从循环中删除[$i]即可获得以下内容:
foreach($jsonObj["sentences_tone"] as $value){
echo 'valor: '.$value['tones'][$i]['score'];
echo 'sentimento: '.$value['tones'][$i]['tone_name'];
echo 'texto: '.$value['text'];
$i++;
};
foreach($jsonObj["sentences_tone"] as $value){
echo 'valor: '.$value['tones']['score'];
echo 'sentimento: '.$value['tones']['tone_name'];
echo 'texto: '.$value['text'];
};
使用$i意味着它正在寻找
sentences_tone
tones
0
tone data
1
tone data
2
tone data
这在你的数据中根本不存在
您也可以删除$i变量上的声明和增量请用英语书写,它表明您在第28行有一个未定义的偏移量。我不知道第28行是什么,但如果我猜的话,我会说它是这两行中的一行:echo'valor:'。$value['tones'][$I]['score'];或者呼应“感伤:”.$value['tones'][$i]['tone_name'];。这是因为你的$value['tones']没有索引2,所以你的数组是shorter@MonkeyZeus,我认为葡萄牙语版本更合适:@Sorix感谢您提供链接,tones是一个对象数组,因此索引$I不会造成问题。产生错误的原因是,对于句子中的每个对象,$i递增,然后在tones数组中使用。如果音调不总是大小为1的数组,则应以不同的方式循环索引。