PHP, помещающий элементы в массив, создает отдельный массив внутри массива

#php #arrays #wordpress #array-merge

Вопрос:

Я создал функцию для генерации случайных чисел, которая принимает начальное число, конечное число, количество генерируемых чисел, а также возможность исключить массив чисел. Это выглядит так:

 function random_numbers($min, $max, $quantity, $exclude) {
    $numbers = range($min, $max);
    $left = array_diff($numbers, $exclude);
    shuffle($left);
    $remain = array_slice($left, 0, $quantity);
    return $remain;
}
 

Массив исключений выглядит следующим образом:

 Array ( [0] => 217 [1] => 321 [2] => 1591 [3] => 1069 [4] => 1532 ) 
 

Затем я хочу объединить вновь сгенерированные числа с массивом исключений и сохранить их в WordPress post_meta, поэтому я сделал следующее:

 $exclude = get_post_meta($product_id, '_numbers_sold', false);

$numbers = random_numbers('1', $max_tickets, $qty, $exclude);

foreach($numbers as $number){
    $exclude [] = $number;
}

update_post_meta($product_id, '_numbers_sold', $sold_numbers);
 

Функция работает, но добавление нового числа в массив создает отдельные массивы. Я тоже пробовал array_merge , но получаю те же результаты.

Результат выглядит следующим образом:

 Array
(
    [0] => Array
        (
            [0] => 217
            [1] => 321
            [2] => 1591
            [3] => 1069
            [4] => 1532
        )

    [1] => 597
    [2] => 1853
    [3] => 582
    [4] => 1887
    [5] => 1484
)
 

Почему это должно было произойти? Он разделяет два массива. Это потому, что ключи массива уже существуют?

Комментарии:

1. Что вы пытались сделать до сих пор, чтобы решить эту проблему? Это так мало кода, что даже vardump мог бы помочь, а если нет, вы также можете запустить XDebug

2. Пожалуйста, укажите var_dump и опубликуйте оба $exclude , $numbers прежде чем пытаться объединить их.