簡體   English   中英

致命錯誤:不能將字符串偏移量用作數組?

[英]Fatal error: Cannot use string offset as an array?

在我的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不太滿意。 有人可以伸出援手嗎?

PS我加了break; 在最后一個回聲之后,它解決了,但我認為這不是解決問題的方法。

$result['info']顯然是一個字符串,而不是一個數組。

嘗試一下。在第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.    }

您已在循環中使用$result['info'] 有時應該未設置$result['info']子數組。 看來您不需要運行循環。 因為您一次將只有一個用戶信息。 或者您可以像這樣使用break:

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;
}

您將$ result ['info']聲明為字符串,然后再嘗試將其用作數組。 嘗試var_dump $ result ['info']。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM