Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/289.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
警告:PHP 7 foreach的字符串偏移量非法_Php_Arrays_Foreach_Php 7 - Fatal编程技术网

警告:PHP 7 foreach的字符串偏移量非法

警告:PHP 7 foreach的字符串偏移量非法,php,arrays,foreach,php-7,Php,Arrays,Foreach,Php 7,使用php curl。我得到了一组数据。我想从中得到以下数据 if(is_array($jsonRes['prod']['ret']['ProdIt'])){ foreach($jsonRes['prod']['ret']['ProdIt'] as $obRes){ $arP["ARTI"] = $obRes['Article']; $arP["ALT"] = $obRes['Name']; $arP["BR"] = $obRes['Bra

使用php curl。我得到了一组数据。我想从中得到以下数据

if(is_array($jsonRes['prod']['ret']['ProdIt'])){
    foreach($jsonRes['prod']['ret']['ProdIt'] as $obRes){
        $arP["ARTI"] = $obRes['Article'];
        $arP["ALT"] = $obRes['Name'];
        $arP["BR"] = $obRes['Brand'];
我得到一个错误:

警告:第48行/...php中的非法字符串偏移量“Article”

警告:第49行的/...php中的字符串偏移量“Name”非法

警告:第50行的/…….php中的非法字符串偏移量“Brand”

这是一个数组

Array
(
    [ret] => Array
        (
            [ProductsItemCount] => 1
            [ProdIt] => Array
                (
                    [Code] => 0789087
                    [Article] => 3011317
                    [Name] => Price cash
                    [Brand] => HATTAT
                    [Price] => 0
                    [Currency] => EUR
                    [Stock] => Array
                        (
                            [StockItem] => Array
这种错误并不总是发生。当数组看起来像这样时,它就没有错误

Array
(
    [ret] => Array
        (
            [ProductsItemCount] => 2
            [ProdIt] => Array
                (
                    [0] => Array
                        (
                            [Code] => 908877677
                            [Article] => 8200892104
                            [Name] => Tovare
                            [Brand] => RENAULT
                            [Price] => 0
                            [Currency] => EUR
                            [Stock] => Array

您需要检查
ProdIt
是一维还是二维。在第一个示例中,它是单个关联数组,而不是关联数组的数组

$prodit = $jsonRes['prod']['ret']['ProdIt'];
if (is_array($prodit)) {
    if (isset($prodit['Article'])) { // 1-dimensional, turn into 2-dimensional
        $prodit = array($prodit);
    }
    foreach ($prodit as $obRes) {
        ...
    }
}

我在请求中获取数据$jsonRes=json_decode($json,true);每个请求创建不同的数组?当显示1个错误时,当2个错误不存在时?有些API像这样令人讨厌。他们只返回元素本身,而不是返回一个包含1个元素的数组,因此您必须特别处理这种情况。非常感谢Barmar。