2014-11-24 2 views
-1

Я получаю эту ошибку в 3-х местах в функции, которую я вставлял ниже. В этом коде есть больше, но я не думал, что это необходимо для выяснения этой вещи.Получение уведомления: Неопределенное смещение: 0

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


} 
+0

Вы вручную создаете массив JSON? Для чего нужны квадратные скобки? – JRL

+0

undefinedoffset = вы пытаетесь использовать запись массива, которая не существует. например вы должны попробовать 'var_dump ($ attributValueOptionCollection)' или что-то еще и посмотреть, что на самом деле там. –

+0

http://jsfiddle.net/cpjv1k8d/. Это весь используемый javascript. Этот код был сделан кем-то другим, поэтому я не понимаю его мыслительный процесс. – Corey

ответ

0

Проблема с этой линии:

$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

+0

Спасибо Мурило. В вашем коде было несколько небольших ошибок, но я смог исправить это очень быстро. К сожалению, это расширение по-прежнему не работает. Я сейчас думаю, что это расширение может быть потерянной причиной, которая является позором. – Corey

+0

Кори, в чем смысл этого кода? –

Смежные вопросы