在我的foreach中,我看到以下错误:
致命错误:无法在第97行使用字符串偏移作为数组 [..]
88. foreach ($response as $result) {
89. if($result['provider'] == 'Facebook') {
90. $provider = 'facebook';
91. }else{
92. $provider = 'twitter';
93. }
94. $user = array(
95. 'provider' => $result['provider'],
96. 'id' => $result['uid'],
97. 'name' => $result['info']['name'],
98. 'image' => $result['info']['image'],
99. 'link' => $result['info']['urls'][$provider],
100. );
101. echo "<h1>".$user['provider']."</h1>";
102. echo "<p>".$user['id']."</p>";
103. echo '<p><img src="'.$user['image'].'" /></p>';
105. echo "<p>".$user['name']."</p>";
106. echo "<p>".$user['link']."</p>";
107. }
我试过在网上阅读以了解问题是什么,但似乎有些问题与我的无关。我也应该提出来,让你知道我用PHP不是那么好。有人可以帮忙吗?
P.S。我在最后一个回声之后添加了break;
并解决了它,但我认为这不是解决问题的方法。
答案 0 :(得分:1)
$result['info']
显然是一个字符串而不是一个数组。
答案 1 :(得分:0)
试试这个。在第99行,你最后不应该使用,
......
88. foreach ($response as $result) {
89. if($result['provider'] == 'Facebook') {
90. $provider = 'facebook';
91. }else{
92. $provider = 'twitter';
93. }
94. $user = array(
95. 'provider' => $result['provider'],
96. 'id' => $result['uid'],
97. 'name' => $result['info']['name'],
98. 'image' => $result['info']['image'],
99. 'link' => $result['info']['urls'][$provider]
100. );
101. echo "<h1>".$user['provider']."</h1>";
102. echo "<p>".$user['id']."</p>";
103. echo '<p><img src="'.$user['image'].'" /></p>';
105. echo "<p>".$user['name']."</p>";
106. echo "<p>".$user['link']."</p>";
107. }
答案 2 :(得分:0)
您在循环中使用了$result['info']
。它应该有时候没有设置$result['info']
的子数组。
看来你不需要运行循环。因为您一次只能有一个用户信息。
或者你可以像这样使用休息:
foreach ($response as $result) {
$provider = strtolower($result['provider']);
$user = array(
'provider' => $result['provider'],
'id' => $result['uid'],
'name' => isset($result['info']['name']) ? $result['info']['name'] : '',
'image' => isset($result['info']['image']) ? $result['info']['image'] : '',
'link' => isset($result['info']['urls'][$provider]) ? $result['info']['urls'][$provider] : ''
);
print_r($user);
echo "<h1>" . $user['provider'] . "</h1>";
echo "<p>" . $user['id'] . "</p>";
echo '<p><img src="' . $user['image'] . '" /></p>';
echo "<p>" . $user['name'] . "</p>";
echo "<p>" . $user['link'] . "</p>";
break;
}
答案 3 :(得分:0)
您将$ result ['info']声明为字符串,然后尝试将其用作数组。尝试var_dump $ result ['info']。