收到通知:未定义的偏移量:0


Getting Notice: Undefined offset: 0

我在下面粘贴的函数中的 3 个位置收到此错误。这段代码还有更多内容,但我认为不需要弄清楚这件事。

$count = count($collection);    
$i = 1 ; 
foreach ($collection as $product) 
{
    $j = 1 ;
    $productId = $product->getDiamondsearchId();
    $attributValueOptions = "[" ;
    $attributValueOptions .= "'".$productId."', "; 
    foreach($filterAttributeIds as $filterAttributeId){
        $attributValueCollection = Mage::getModel('diamondsearch/diamondsearchattributvalue')->getCollection()->addFieldToFilter('attribut_id',$filterAttributeId)->addFieldToFilter('diamondsearch_id',$productId)->getData();
        $attrbutValueId = $attributValueCollection[0]['attrbut_value_id'];
        //echo $attrbutValueId."<br>";
        $attributValueOptionCollection = Mage::getModel('diamondsearch/diamondsearchattributoptionvalue')->getCollection()->addFieldToFilter('id',$attrbutValueId)->getData();
        if($j == 1 && $attributValueOptionCollection[0]['attribut_value'] == ""){
        break ;
        }
        if($j == 15){
            $attributValueOptions .= "'".$attributValueOptionCollection[0]['attribut_value']."'"; 
        }else{
            $attributValueOptions .= "'".$attributValueOptionCollection[0]['attribut_value']."', "; 
        }
        $j++;
    }
    if($count == $i ){
    $attributValueOptions .= "]";
    }else{
    $attributValueOptions .= "], ";
    }
    $i++;
    echo $attributValueOptions ;

}

问题出在以下行上:

$attributValueCollection = Mage::getModel('diamondsearch/diamondsearchattributvalue')->getCollection()->addFieldToFilter('attribut_id',$filterAttributeId)->addFieldToFilter('diamondsearch_id',$productId)->getData();
$attrbutValueId = $attributValueCollection[0]['attrbut_value_id'];

您正在尝试获取数组的第一项,但此变量为空。你应该验证,然后做你想要的东西,像这样:

if(!empty(attributValueCollection)){
 $attrbutValueId = $attributValueCollection[0]['attrbut_value_id'];

以下是完整的要点:https://gist.github.com/muriloazevedo/8dc5b11b17d1c4a3a518

但同样重要的是要记住,如果您尝试生成 json 结果,最好使用 json_encode:http://php.net/manual/pt_BR/function.json-encode.php