Синтаксическая ошибка в 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]) {
....
}