尝试解析 PHP 数组并得到 Uncaught TypeError: Cannot access offset of type string on string [duplicate]

问题描述 投票:0回答:1

在尝试循环访问下面的这个数组时,我遇到了致命的偏移错误。

致命错误:未捕获类型错误:无法访问字符串中字符串类型的偏移量

这是我正在尝试解析的数组...

Array ( 
    [data] => Array ( 
        [total] => 29 
        [currentTotal] => 29 
        [dataList] => Array ( 
            [0] => Array ( 
                [Field1] => https://i.ebayimg.com/images/g/320AAOSwHYJlgKh3/s-l300.webp 
                [Field2] => PSA 10 Mike Trout 2011 Bowman Draft #101 RC Rookie Card *TOUGH* Angels SP 
                [Time] => Dec 29, 2023 
                [Field3] => $501.69 
                [Field4] => +$5.00 shipping 
                [Field5] => Auction · 59 bids 
            ) 
            [1] => Array ( 
                [Field1] => https://i.ebayimg.com/images/g/xVMAAOSwYR5lV3IS/s-l300.webp 
                [Field2] => 2011 Bowman Chrome Draft MIKE TROUT #101 RC Rookie PSA 10 Gem Mint 
                [Time] => Dec 27, 2023 
                [Field3] => $475.00 
                [Field4] => Free Shipping 
                [Field5] => Buy It Now 
            ) 
            [2] => Array ( 
                [Field1] => https://i.ebayimg.com/images/g/PxsAAOSw9kpkC6wx/s-l300.webp 
                [Field2] => 2011 Bowman Chrome MIKE TROUT Rookie RC #101 PSA 10 - Los Angeles Angels 
                [Time] => Dec 23, 2023 
                [Field3] => $475.00 
                [Field4] => +$5.00 shipping 
                [Field5] => Buy It Now 
            ) 
            [3] => Array ( 
                [Field1] => https://i.ebayimg.com/images/g/KsMAAOSwTLZlc6E6/s-l300.webp 
                [Field2] => 2011 Bowman Chrome Draft MIKE TROUT #101 RC PSA 10 Gem Mint 
                [Time] => Dec 15, 2023 
                [Field3] => $450.00 
                [Field4] => +$4.00 shipping [Field5] => Buy It Now 
            )
            ...

这是抛出错误的 php 代码:

function insertPriceGuide ($oArray){
    $data = $oArray;
    
    $rowCount = 0;
    
    foreach($data as $key => $val)
    {
        echo $rowCount;
        $imgURL = $val['dataList'][$rowCount]['Field1'];
        $kw = $val['dataList'][$rowCount]['Field2'];
        echo $imgURL.'<br/>';
        echo $kw.'<br/>';
        
        $rowCount++;
        echo $rowCount;
        
    }

循环拉取第一个数据行,但在获取下一个数据“datalist”行时抛出“无法访问字符串上字符串类型的偏移量”?任何帮助将不胜感激。谢谢!

php arrays loops offset
1个回答
0
投票

这是因为您在错误的数组上循环。 您应该先检查数组

$data
中是否包含
dataList
键。 之后您将在
$data['dataList']

if(array_key_exists('dataList', $data)){
    $rowCount = 0;
    foreach($data['dataList'] as $key => $val)
    {
        echo $rowCount;
        $imgURL = $val[$rowCount]['Field1'];
        $kw = $val['dataList'][$rowCount]['Field2'];
        echo $imgURL.'<br/>';
        echo $kw.'<br/>';
        
        $rowCount++;
        echo $rowCount;
        
    }
}
© www.soinside.com 2019 - 2024. All rights reserved.