警告:PHP 7 foreach的字符串偏移量非法
使用php curl。我得到了一组数据。我想从中得到以下数据警告: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
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。