Обновление до PHP 7.3 сломало код, который раньше работал, как решить?

Мой сайт WordPress работал нормально до обновления PHP, я не обновлял версию онлайн-сайта, но тот, на котором я работаю на локальном сервере для экспериментов, обнаружил следующую проблему.

Появляется сообщение:

"Предупреждение: array_merge(): аргумент №19 не является массивом в C:....php в строке 1004"

Кажется, это происходит в функции array_merge.

<?php

$resume = get_posts(
    array(
        'post_type' => array('post', 'events'),
        'numberposts' => -1,
        'meta_query' => array(
            'relation' => 'AND',
            array(
                'key' => 'custom_filter',
            ),
            array(
                'key' => 'location_latitude',
            ),
        ),
    )
);

foreach ($resume as $post) {
    $meta[] = get_post_meta($post->ID, 'custom_category', true);
}

$oneDimensionalArray = call_user_func_array('array_merge', $meta); // Problem - line 1004 // 

$unique = array_unique($oneDimensionalArray);

for ($i = 0; $i < (is_array($oneDimensionalArray) ? count($oneDimensionalArray) : 0); $i++) {
    if (!in_array($oneDimensionalArray[$i], $unique)) {
        $unique[] = $oneDimensionalArray[$i];
    }
}

sort($unique);  /* Sort array by value alphabetically */

foreach ($unique as $value) {
    $resume2 = get_posts(
        array(
            'post_type' => array('post', 'estabelecimentos', 'eventos', 'parceiros', 'noticias'),
            'numberposts' => -1,
            'meta_query' => array(
                'relation' => 'AND',
                array(
                    'key' => 'custom_category',
                    'value' => $value,
                    'compare' => 'LIKE',
                ),
                array(
                    'key' => 'location_latitude',
                ),
            ),
        )
    );

    $count = count($resume2);

    ?>

    <label title="<?php echo $value; ?>&nbsp;(<?php echo $count; ?>)"><input type="checkbox" class="chkbox"
                                                                             data-value="<?php echo $value; ?>"
                                                                             name="category[]"
                                                                             value="<?php echo $value; ?>"><?php echo $value; ?>
        <span>&nbsp;(<?php echo $count; ?>)</span></input></label>

<?php } ?>

person Flow    schedule 24.10.2019    source источник
comment
Похоже, что $meta не в массиве, попробуйте проверить, что в этой переменной.   -  person CaShiS    schedule 24.10.2019


Ответы (1)


Какую версию PHP вы использовали раньше?

Я знаю, что этот ответ не решает проблему, но, возможно, он вам немного поможет.

Посмотрите, можете ли вы использовать xdebug (я использую его с PHPstorm) с вашей программой кода, вы можете легко добавлять точки останова в свой код и смотреть шаг за шагом, что происходит.

Может быть, вы также можете добавить

vardump($meta);
exit;

перед ошибкой, чтобы увидеть, что именно содержит $meta. Также попробуйте перед этим сбросить и выйти из других переменных.

Возможно, вы также можете попробовать установить $oneDimensionalArray = []; перед функцией слияния.

person Baracuda078    schedule 24.10.2019