Синтаксическая ошибка в PHP: доступ к массиву возвращаемого значения функции

Ну, проблема в том, что я написал код, который избегает показа дублированных данных. На моей локальной машине это работает отлично, но на хосте я получаю следующую ошибку:

Синтаксическая ошибка, неожиданная '[' в /home/eplus/public_html/vqmod/vqcache/vq2-catalog_view_theme_default_template_product_product.tpl в строке 481

Вот код, где происходит ошибка

if ($pr_id[$i] == 0) {
   break;
   echo 'h1' . "Нет похожих продуктов";
}

if ($pr_id[$i] != array_unique($pr_id)[$i]) {    // Error on this line
   $product_fee = $this->db->query("SELECT `product_id` FROM `" . DB_PREFIX . "product_to_category` WHERE `category_id`='".$feed_id."' AND NOT `product_id` = '".$products_id."'  GROUP BY `product_id` ORDER BY RAND() LIMIT 0,10");

   $pr_id[$i] = $product_fee->row['product_id'];

   continue;
}

Как я могу избежать этого? Что касается CMS, я в настоящее время использую OpenCart.

1 ответ

Решение

Разыменование массива поддерживается только в PHP версии 5.4 и выше.
Это когда вы используете скобочный доступ сразу после функции, которая возвращает массив: array_unique($array)[0],

Подробнее: PHP 5.4: новые функции

Я бы посоветовал вам создать массив с уникальными элементами до if пункт:

$pr_unique = array_unique($pr_id);

if ($pr_id[$i] != $pr_unique[$i]) {
    ....
}
Другие вопросы по тегам