@Ysery

PHP код работает в PHP 7.2, а в PHP 5.6 вызывает фатальную ошибку, почему?

Доброго времени суток, уважаемые специалисты.

Вот набросал первый код, но почему то в 5.6 версии PHP ошибка, а в 7.2 версии отлично работает, в чём ошибка?
В логе пишет PHP Parse error: syntax error, unexpected '['
if (in_category(21) && !is_front_page()) {
	$news-> query (array_merge ($args, ['cat' => 81 ]));
} elseif (in_category(23) && !is_front_page() ){
	$news-> query (array_merge ($args, ['cat' => 44 ]));
} else {
	$news-> query (array_merge ($args, ['cat' => -12,-16,-18 ]));
}


И вот этот с аналогичной проблемой, который я уже нашёл на просторах интернета.
В логе пишет PHP Parse error: syntax error, unexpected ':', expecting '{'
function get_first_post_image(string $post_content): string
{
    $defaultImage = 'https://exsample.ru/defaultimage.png';

    libxml_use_internal_errors(true);
    $doc = new DOMDocument();
    $doc->loadHTML($post_content);

    $img = $doc->getElementsByTagName('img');
    if (!$img->length) return $defaultImage;

    return $img->item(0)->getAttribute('src') ?: $defaultImage;
  • Вопрос задан
  • 135 просмотров
Решения вопроса 2
@Nc_Soft
В php 5.4 вроде еще не было указания типа для return, это c 7 версии появилось
function get_first_post_image(string $post_content): string

Надо заменить на
function get_first_post_image(string $post_content)


Вот этого тоже не было
return $img->item(0)->getAttribute('src') ?: $defaultImage;

заменяется на
return $img->item(0)->getAttribute('src') ? $img->item(0)->getAttribute('src') : $defaultImage;
Ответ написан
@kandrash
Кратко о себе
Судя по ошибке у вас вообще не 5.6 а 5.3. В ней отсутствует возможность короткого объявления массивов.
// До 5.4
array('cat' => 81)
// После
['cat' => 81]

С кодом из примера та же ситуация. Возвращаемое значение (): string завезли только в седьмой версии. PHP 5.* такой синтаксис не поддерживает.
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы