尝试从我从JSON转换的数组中提取数据时,我收到“警告:非法字符串偏移”错误。
现在我收集到这种情况会在您使用的索引不存在时发生,这让我感到困惑,因为它确实存在并且在我希望直接访问数组值时工作正常。
使用代码$clean = json_decode($json_output, true);
将我的JSON解码为数组,如果我使用echo $clean['text']
,则“text”的字符串值显示正常。
然而,当我尝试这段代码时,我收到错误:
foreach ($clean as $key => $list){
$output .= $list['text'];}
我有种感觉我在某个地方犯了一个愚蠢的错误!
答案 0 :(得分:1)
使用$list['text']
,您实际上正在访问$clean['text']
的值,这显然是字符串"text"
。只是,你正在访问它,好像它是一个关联数组 - 实际上与$clean
完全相同。试试这个:
foreach ($clean as $key => $list)
{
if ($key === 'text')
{// only echo for $clean['text']
echo 'array clean, key: '.$key.' => '.$list."\n";
continue;//next
}
echo $key.' => '.$list."\n";//shows all other key-value pairs
}
这应该为您解决问题:$key
将保留$clean
持有的所有密钥,包括text
,$list
将分配该密钥引用的值。就这么简单,真的
答案 1 :(得分:0)
似乎$list
是一个字符串而不是一个数组。因此$list['text']
失败。循环中的var_dump($list);
会有所帮助。
请注意,如果您遇到此类问题,var_dump()
将永远是您的朋友。